繁体   English   中英

在IN SQL语句中使用'%'或通配符,或者如何搜索不完全相同的多个文本条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM