我正在试图找出这个任务:
如果颜色信息不为空或不为空,请列出每个种马的所有细节。
表:
以下似乎不起作用,我继续获取有关母马的信息:
SELECT * FROM horse
WHERE (gender='S')
AND colour IS NOT NULL
or NOT colour='';
我认为括号意味着gender='S'
首先会“触发”,但我想我误解了操作的顺序?
感谢。
答案 0 :(得分:0)
这里有几个问题。首先,and
的优先级高于or
,因此您的where
子句实际上被解释为((gender='S') AND colour IS NOT NULL) or (NOT colour='')
。其次,即使您正确使用了括号,(colour IS NOT NULL NOT colour='')
也始终为真 - 如果color
为null
则不等于''
,如果它是''
,它不是null
。实际上,您只需要一系列and
条件:
SELECT *
FROM horse
WHERE gender='S' AND
colour IS NOT NULL AND
colour != '';