LIKE子句在SQL Server中不起作用

Bes*_* 87 2 sql sql-server sql-server-2005 sql-like

我有一个表在SQL Server 2005中具有以下列:

DocID   NSN  QTY
-----------------
DHA12    32    5
DSRB23   22   45
TF22     70   23
Run Code Online (Sandbox Code Playgroud)

每当我执行以下查询以获取所有具有以DSRB或DHA开头的DocId的NSN时,它都会给我空集:

SELECT  DocId, NSN, Qty, RequestDate, ReceiveDate
  FROM  Orders 
 WHERE (DocID LIKE '%DSRB%') 
   AND (DocID LIKE '%DHA%')  
Run Code Online (Sandbox Code Playgroud)

我想有两个LIKE子句的问题,因为当我删除最后一个LIKE子句时,查询工作正常.

Day*_*Day 7

因为在你的表没有行,你得到一个空的结果DocID是一样 %DSRB% %DHA%在同一时间.你不会在你的问题,但我猜你是期待着与DocIds收到两行DHA12DSRB23.

要做到这一点,你需要选择行,其中DocID要么 %DSRB% %DHA%.尝试将AND您的WHERE子句更改为OR:

SELECT DocId, NSN, Qty, RequestDate, ReceiveDate
FROM Orders
WHERE (DocID LIKE '%DSRB%') OR (DocID LIKE '%DHA%')
Run Code Online (Sandbox Code Playgroud)

如果需要更多示例,请参阅SQL逻辑运算符的这个简介.


Dex*_*ter 5

如果你想找到包含行无论是 XX YY,你需要使用OR:

SELECT DocId, NSN, Qty, RequestDate, ReceiveDate 
FROM Orders 
WHERE (DocID LIKE '%DSRB%')
   OR (DocID LIKE '%DHA%')
Run Code Online (Sandbox Code Playgroud)