簡體   English   中英

OR語句不起作用

[英]OR statement isn't working

Sqlserver的新手,我正在做類似的事情

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')

要么將name作為變量傳遞,然后使用“ YYY”,或者如果要使用內部查詢進行獲取,則按如下所述在IN子句中傳遞子查詢。

SELECT * 
FROM PERSON 
WHERE NAME IN ('jill') OR NAME IN (SELECT NAME FROM PERSON WHERE NAME ='jake');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM