Sqlserver的新手,我正在做类似
的事情select *
from table1
where field1 IN ('textvalue1','textvalue2') OR field2 IN ('textvalue1','textvalue2')
它根本不工作......没有语法错误,AND
语句正常工作。
我也尝试将它括在括号中。
答案 0 :(得分:3)
根据所有评论,您不得拥有您认为自己所做的数据中的值。这是一个可重复的工作示例。
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 |
+--------+--------+
OF NOTE 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')
答案 1 :(得分:-1)
您要么将名称作为变量传递,然后使用'YYY',要么使用内部查询进行提取,然后在IN子句中传递子查询,如下所述。
SELECT *
FROM PERSON
WHERE NAME IN ('jill') OR NAME IN (SELECT NAME FROM PERSON WHERE NAME ='jake');