【发布时间】:2012-02-25 02:09:16
【问题描述】:
以下工作 - 当退款等于 1 时返回 Y,否则默认为 N
IF(fd.charge_back = 1, 'Y', 'N') AS charge_back
但是我似乎无法让这个工作?语法是否有效
IF(compliment = ('set' OR 'Y' OR 1), 'Y', 'N') AS customer_compliment
【问题讨论】:
-
如果你把你的条件改成
compliment IN ('set','Y','1')会怎么样 -
您可能会考虑在查询中不这样做。这是格式化,不再查询。你会得到一个明确的真/假 1/0 作为回报,这应该可以解决问题。例如,您可以这样做:if(compliment) 等,这不能用 Y/N 之类的字符串来完成。 Y/N 也与语言无关,而布尔值则不是。因此,例如在翻译成荷兰语时,您必须将 Y/N 再次转换为 J/N。简而言之:除非您有充分的理由这样做,或者只需要采取一个截止解决方案,否则也许不要这样做。
-
感谢您的反馈,我同意布尔值会更有价值。但是,我正在使用现有数据,并且无法在不进一步影响其他部分的情况下更改所有值。
标签: mysql sql select if-statement