表结构:
Table: People
| Name | Skill1 | Skill2 | Skill3 | Skill4 | Skill5 |
| Tom | Cooking | Cleaning | Eating | | |
| Jane | Typing | Cooking | Sleeping | Flirting | |
| John | Tennis | | | | |
Run Code Online (Sandbox Code Playgroud)
没有技能的地方,它只是NULL.出于某种原因,我使用以下SQL得到0结果:
select Name from People
where Skill1 or Skill2 or Skill3 or Skill4 or Skill5 = 'Cooking';
Run Code Online (Sandbox Code Playgroud)
我希望看到汤姆和简......但我没有,我做错了什么?
最短的语法可能是这个:
select Name
from People
where 'Cooking' IN (
Skill1,
Skill2,
Skill3,
Skill4,
Skill5);
Run Code Online (Sandbox Code Playgroud)
您需要每个子句都是完整的测试:
select Name from People
where Skill1 = 'Cooking'
or Skill2 = 'Cooking'
or Skill3 = 'Cooking'
or Skill4 = 'Cooking'
or Skill5 = 'Cooking';
Run Code Online (Sandbox Code Playgroud)
在where每个or之间必须有一个完整的布尔测试.在您的脚本中,您只是调用列,这取决于您使用的SQL版本将具有不同的结果.
SQL Server给出了这个:
消息4145,级别15,状态1,行1在预期条件的上下文中指定的非布尔类型的表达式,在"OR"附近.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |