OR语句不工作
问题描述:
新建SQLSERVER,我做这样的事情OR语句不工作
select *
from table1
where field1 IN ('textvalue1','textvalue2') OR field2 IN ('textvalue1','textvalue2')
它不工作在所有...没有语法错误和AND
语句工作正常。 我试着把它放在括号中。
答
根据所有评论,您不能在数据中拥有您认为您所做的值。这是一个可重复使用的例子。
declare @table table (field1 varchar(64), field2 varchar(64))
insert into @table
values
('a','b'),
('c','d'),
('e','f'), --only row that won't return with logic below
('g','h'),
('i','j')
select *
from @table
where field1 in ('a','c') or field2 in ('h','j')
退货
+--------+--------+
| field1 | field2 |
+--------+--------+
| a | b |
| c | d |
| g | h |
| i | j |
+--------+--------+
注意的SQL Server忽略尾随的平等经营的空间,但前导空格会失败。因此,如果你有领先的空间,你可以可能需要使用LTRIM()
。
declare @table table (field1 varchar(64), field2 varchar(64))
insert into @table
values
('a ','b'),
('c ','d'),
('e ','f'),
('g',' h'),
('i',' j')
select *
from @table
where ltrim(field1) in ('a','c') or ltrim(field2) in ('h','j')
答
要么要传递的名称作为变量然后使用“YYY”,或者如果使用的是内部查询然后传递子查询IN子句内如下所述取。
SELECT *
FROM PERSON
WHERE NAME IN ('jill') OR NAME IN (SELECT NAME FROM PERSON WHERE NAME ='jake');
使用http://rextester.com/l/sql_server_online_compiler和编写代码,并将其链接和安装一些样本数据... – JGFMK
什么是'list'?这是一个变量或子查询或...逗号分隔值? – scsimon
你将不得不分享一些样本数据和你想要的结果。我们可以通过查看您的SQL语句告诉您,它会运行,它会运行,但您已经知道这一点。 – JNevill