Go语言 MySQL查询中过滤值为0时如何设置条件?

2nc8po8w  于 2023-04-18  发布在  Go
关注(0)|答案(1)|浏览(111)

我正在用Go语言编写一个程序,需要过滤数据库中的退款记录。我的业务要求是,当q.RefundStatus过滤条件为0时,我希望查询中包含此条件。我当前的代码如下所示:

if q.RefundStatus != nil {
    repos.Condition.RefundStatus = *q.RefundStatus
}

我注意到,当q.RefundStatus的值为0时,此代码不会将条件添加到查询中。然而,当q.RefundStatus的值为非零时,条件会按预期添加到查询中。因此,我需要帮助解决此问题。
如何修改代码以满足以下要求:
当q.RefundStatus的值为0时,在查询中包含该条件。
我尝试了其他方法,例如在条件语句中检查 *q.RefundStatus!= 0,但似乎无法解决问题。希望有人能提供有效的解决方案。谢谢!

vmdwslir

vmdwslir1#

根据你的问题,我理解你需要在Go程序中使用gorm过滤退款记录,考虑q.RefundStatus的值,即使它是0。你遇到的问题是由gorm忽略值为0的查询引起的。巧合的是,我几天前遇到了类似的问题,并找到了一个解决方案,应该也适用于你的情况。
您可以像这样修改代码:

if q.RefundStatus != nil {
    repos.SpecialCondition.RefundStatusIn = []int8{*q.RefundStatus}
}

通过使用切片,您可以告诉gorm在查询中包含条件,即使值为0。这种方法解决了我最近面临的问题,应该也适用于您的情况。现在您的程序将根据需要过滤记录。如果您有任何进一步的问题或需要更多的澄清,请随时询问。我希望我能帮助您。

相关问题