gpt4 book ai didi

SQL SELECT WHERE 列包含所有分隔字符串

转载 作者:行者123 更新时间:2023-12-02 23:55:34 25 4
gpt4 key购买 nike

我有一个包含如下列的表格:

表:teeburu
列:
- 艾迪国际身份
- bariu varchar(8000)

我想要一个存储过程,其输入是字符串,例如:abc qwe ax xyza长度和多少个空格可供用户自由输入。

它的作用是选择列 bariu 包含所有的所有行:abcqweaxxyza

这是我尝试过的:

我创建 split 函数(复制自 this page )

create FUNCTION [dbo].[Split](@String varchar(8000), @Delimiter char(1))
returns @temptable
TABLE (nameIndex int identity(1,1),items varchar(8000))
as
begin
declare @idx int
declare
@slice varchar(8000)

select @idx = 1
if len(@String)<1 or @String
is null return

while @idx!= 0
begin
set @idx =
charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx
- 1)
else
set @slice = @String

if(len(@slice)>0)
insert
into @temptable(Items) values(@slice)

set @String =
right(@String,len(@String) - @idx)
if len(@String) = 0 break
end

return
end

有了它,我设法编写了一些内容来选择列 bariu 包含其中至少一个的所有行:abcqweaxxyza

with list as(
select * from dbo.split(@Param,' ')
)
SELECT aidi, bariu FROM teeburu
INNER JOIN list
ON bariu like '%'+ list.items+ '%'
GROUP BY aidi, bariu

但我不知道如何做所有而不是至少其中一个。我的问题是如何做到这一点?

我正在使用 MS SQL SERVER

最佳答案

您只需添加HAVING COUNT(*) = (SELECT COUNT(*) FROM list)

with list as(
select * from dbo.split('abc qwe ax xyza',' ')
)
SELECT aidi, bariu FROM teeburu
INNER JOIN list
ON bariu like '%'+ list.items+ '%'
GROUP BY aidi, bariu
HAVING COUNT(*) = (SELECT COUNT(*) FROM list)

关于SQL SELECT WHERE 列包含所有分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44839468/

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