gpt4 book ai didi

mysql - 在 SQL 中对字符串使用 'IN' 子句

转载 作者:行者123 更新时间:2023-11-29 01:36:35 25 4
gpt4 key购买 nike

您好,我有一个包含 2 列的表格。 名称 varchar(50)RoleType Varchar(500)

我在表中有如下 img 数据。 enter image description here

现在我将 roletype 2 和 4 作为参数传递,并希望获取所有在 Roletype 列中具有 roletype 2 或 4 的数据.例如,2 和 4 roletype 的结果是测试 a、测试 d、测试 c 和测试 e。

我尝试使用以下查询,但它不起作用。

SELECT * FROM Userinfo where Roletype in ('2', '4')

最佳答案

使用 Split 函数拆分以逗号分隔的列值:

拆分功能:

CREATE FUNCTION [dbo].[fnSplit]
(
@String NVARCHAR(4000),
@Delimiter NCHAR(1)
)
RETURNS TABLE
AS
RETURN
(
WITH Split(stpos,endpos)
AS(
SELECT 0 AS stpos, CHARINDEX(@Delimiter,@String) AS endpos
UNION ALL
SELECT endpos+1, CHARINDEX(@Delimiter,@String,endpos+1)
FROM Split
WHERE endpos > 0
)
SELECT 'Id' = ROW_NUMBER() OVER (ORDER BY (SELECT 1)),
'Data' = SUBSTRING(@String,stpos,COALESCE(NULLIF(endpos,0),LEN(@String)+1)-stpos)
FROM Split
)

现在更新您的查询如下:

SELECT * 
FROM Userinfo
WHERE EXISTS (SELECT Data
FROM [dbo].[fnSplit] (Roletype,',')
WHERE Data IN (2, 4) )

例子:

SELECT * 
FROM Category

SELECT *
FROM Category C
WHERE EXISTS (SELECT *
FROM [dbo].[fnSplit] (Name, ',')
WHERE DATA IN ('test', 'test3'))

初始:

enter image description here

输出:

enter image description here

关于mysql - 在 SQL 中对字符串使用 'IN' 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300053/

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