SQL或运算符

SQL或运算符,sql,mysql,Sql,Mysql,我现在正在摆弄。给定以下查询,它将返回21行: select account_id, product_cd, cust_id, avail_balance from account where product_cd = 'CHK' OR product_cd = 'SAV' OR product_cd = 'CD' OR product_cd = 'MM' 在使用BPFs时,我尝试了这个方法,它返回24行和96条警告 select account_id, product_cd,

我现在正在摆弄。给定以下查询,它将返回21行:

select account_id, product_cd, cust_id, avail_balance 
from account 
where 
product_cd = 'CHK' OR 
product_cd = 'SAV' OR 
product_cd = 'CD'  OR 
product_cd = 'MM'
在使用BPFs时,我尝试了这个方法,它返回24行和96条警告

select account_id, product_cd, cust_id, avail_balance
from account
where product_cd = ('CHK' OR 'SAV' OR 'CD' OR 'MM');
我知道,一个人可以在操作符中使用
,但是,为什么第二个要使用

查询返回3行吗?

我猜可能涉及到一些隐式转换,
('CHK'或'SAV'或'CD'或'MM')
被计算为布尔值。这在SQL Server上似乎无效,例如,我无法执行以下操作:

select ('CHK' OR 'SAV' OR 'CD' OR 'MM')

如果这是MySql,我想您会发现您的第二个查询返回的结果与“where product_cd=1”相当,恰好比第一个查询多了3行,第二个查询不正确

如果您正在学习SQL,即ANSI SQL,您应该将MySql设置为使用ANSI Conformance,或者使用符合ANSI标准的产品,该产品可以捕获错误,并且不会返回psuedo结果。表达方式如下:

('CHK' OR 'SAV' OR 'CD' OR 'MM')
是SQL中的纯错误,因为或只能用于布尔值,例如比较结果


MySQL正在将字符串“转换”为整数等,然后将表达式的结果与乘积进行比较。查询结果无效。

您使用的是什么SQL数据库?此语法对其中一些无效。建议坚持使用
中的ANSI标准
。这是一个非常模糊的问题。我以为我对SQL一无所知。下次你写这样的问题时,至少写下输出是什么,而不是它的大小。嗨,是的,是mysql。谢谢你的快速回答。现在还不能投票。我已经合并了你的两个未注册帐户。你现在应该可以评论/接受答案了。