[英]Using '%' or wildcard in IN SQL statement Or how to search for multiple text criteria not exact
我有SQL:
Select *
from Inventory
Where RowKey like ('%439%)
行键包含以下文本:Stock_Id =439。我需要表中Rowkey列旁边的Status列。
我有一个需要查找的40个ID的列表-除了像做RowKey一样('%439%')并在%40次之间更改数字之外,还有一种更简单的方法吗?
我试过了
Select *
from Inventory
where rowkey in ('%439%','%5000%')
但它什么也没想出来。
编辑:有没有办法包括AND条件? 例如从库存中选择*,其中RowKey喜欢('%439%)AND oldvalue ='1'
好吧,您可以删除最后一个字符串之前的内容:
where stuff(rowkey, 1, charindex('= ', rowkey) + 1, '') in ('439', '5000')
如果你指的是静态的数字BETWEEN
,你可以只使用这个特定的值:
SELECT *
FROM INVENTORY
WHERE SUBSTRING(ROWKEY, CHARINDEX('= ', ROWKEY) + 2, 99) BETWEEN 4390 AND 5000
也许用一个JOIN和一些XML来解析列表
例
Declare @List varchar(max) = '439,5000,...'
Select A.*
From Inventroy A
Join (
Select Value = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (values (Cast('<x>' + replace(@List,',','</x><x>')+'</x>' as xml) )) A(x)
Cross Apply x.nodes('x') AS B(i)
) B
On charindex(B.Value,A.RowKey)>0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.