【发布时间】:2011-04-05 21:37:24
【问题描述】:
我在 SQL Server 2005 中有一个包含以下列的表:
DocID NSN QTY
-----------------
DHA12 32 5
DSRB23 22 45
TF22 70 23
每当我执行以下查询以获取所有具有以 DSRB 或 DHA 开头的 DocId 的 NSN 时,它都会给我一个空集:
SELECT DocId, NSN, Qty, RequestDate, ReceiveDate
FROM Orders
WHERE (DocID LIKE '%DSRB%')
AND (DocID LIKE '%DHA%')
我猜是有两个 LIKE 子句的问题,因为当我删除最后一个 LIKE 子句时,查询工作正常。
【问题讨论】:
-
如果您想搜索以 char 字符串开始的内容,您应该使用
LIKE 'DHA%'- 在这种情况下,SQL Server 有机会使用索引可能存在,以加快速度。如果您使用您现在拥有的表达式 (LIKE '%DHA%'),您将在字符串中的任何位置搜索包含这三个字母的内容,并且 SQL Server 根本没有机会使用任何索引 - 即使它存在。
标签: sql sql-server sql-server-2005 sql-like