我正在使用SQL management Studio 2014.我有SQL表格,如:
sql_Type
| sql_Name
| sql_Parent
我想让所有拥有特定父母的sql_Type
。我的变量@listParents
是nvarchar(MAX),包含用';'分隔的所有父项。
我该怎么办?我有一个开始,但我不知道在我的IN
中写些什么:
DECLARE @listParents nvarchar(MAX) = 'Parent1;Parent2;Parent3;';
SELECT sql_Name
FROM [myTable]
WHERE sql_Type = 'Box' AND sql_Parent IN
(
-- What should I do wjth @listParents ?
)
答案 0 :(得分:4)
MSSQL(< SQL server 2016):
您可以使用CHARINDEX
来解决此问题:
DECLARE @listParents nvarchar(MAX) = 'Parent1;Parent2;Parent3;'
SELECT sql_Name
FROM test
WHERE sql_Type = 'Box' AND CHARINDEX(sql_Parent + ';', @listParents) > 0;
MSSQL(> = SQL server 2016):
自SQL Server 2016起,您可以使用STRING_SPLIT
和IN
来解决此问题:
DECLARE @listParents nvarchar(MAX) = 'Parent1;Parent2;Parent3;'
SELECT sql_Name
FROM test
WHERE sql_Type = 'Box' AND sql_Parent IN (
SELECT value
FROM STRING_SPLIT(@listParents, ';')
WHERE RTRIM(value) <> ''
);