gpt4 book ai didi

sql-server - 如何比较逗号分隔值的两列值?

转载 作者:行者123 更新时间:2023-12-04 02:00:55 24 4
gpt4 key购买 nike

我有一个包含特定列的表,其中有一列包含逗号分隔的值,例如 test,exam,result,other

我将像 result,sample,unknown,extras 这样的字符串作为参数传递给存储过程。然后我想通过检查这个字符串中的每个短语来获取相关记录。

例如:

表A

ID        Name                Words
1 samson test,exam,result,other
2 john sample,no query
3 smith tester,SE

现在我想搜索 结果、样本、未知、额外

那么结果应该是
ID        Name                Words
1 samson test,exam,result,other
2 john sample,no query

因为在第一条记录 结果中 匹配,而在第二条记录 样本中 匹配。

最佳答案

这不是一个伟大的设计,你知道。最好将 Words 拆分成一个单独的表(id、word)。

也就是说,这应该可以解决问题:

set nocount on
declare @words varchar(max) = 'result,sample,unknown,extras'

declare @split table (word varchar(64))
declare @word varchar(64), @start int, @end int, @stop int

-- string split in 8 lines
select @words += ',', @start = 1, @stop = len(@words)+1
while @start < @stop begin
select
@end = charindex(',',@words,@start)
, @word = rtrim(ltrim(substring(@words,@start,@end-@start)))
, @start = @end+1
insert @split values (@word)
end

select * from TableA a
where exists (
select * from @split w
where charindex(','+w.word+',',','+a.words+',') > 0
)

我可以为您提供这个而在 DBA hell 中燃烧!

编辑:用 SUBSTRING 切片替换了 STUFF,在长列表上快了一个数量级。

关于sql-server - 如何比较逗号分隔值的两列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1618387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com