带或的mysql SELECT IF语句

带或的mysql SELECT IF语句,mysql,sql,select,if-statement,Mysql,Sql,Select,If Statement,以下操作有效-当按存储容量使用计费等于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 这大概会起作用: IF(compliment = 'set' OR compliment = 'Y' OR compliment = 1, 'Y', 'N

以下操作有效-当按存储容量使用计费等于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

这大概会起作用:

IF(compliment = 'set' OR compliment = 'Y' OR compliment = 1, 'Y', 'N') AS customer_compliment

将按照建议执行任务。

如果您将条件更改为<代码>恭维(“设置”、“Y”、“1”)<代码>,您可能会考虑在查询中不这样做。这是格式化,不再查询。你得到了一个明确的真/假1/0作为回报,这应该会起到作用。例如,您可以执行:if(恭维)等,这不能用Y/N这样的字符串来完成。此外,Y/N是语言不可知的,而布尔值不是。例如,当翻译成荷兰语时,你必须再次将Y/N转换成J/N。简言之:除非你有很好的理由这样做,或者必须采用截止解,否则不要这样做。感谢你的反馈,我同意布尔值是一个更好的使用值。然而,我正在处理现有数据,无法更改所有值,而不会对其他部分产生进一步的连锁反应。这可能是一个愚蠢的问题,但是中的
子句在这里起作用吗?例如,
IF(在('set','Y',1','Y','N')中作为客户的赞美语
?这是对
VARCHAR
INT
值的一个很好的呼喊,但不适用于
null
IF(compliment IN('set','Y',1), 'Y', 'N') AS customer_compliment