SQL String_Split 和 Substring 函数的正确使用

Correct Use of the SQL String_Split and Substring function

我有下面的 SQL 代码,其中 @Province 输入参数采用这种形式:""""Central District","Central Region","Delaware","德伦特省、东开普省、自由邦、豪登省、哈达普地区、哈里亚纳邦、卡拉斯地区、夸祖鲁纳塔尔省、夸祖鲁-纳塔尔省、林波波省、洛雷斯坦省“普马兰加省”、“西北”、“北开普省”、“宾夕法尼亚州”、“Qarku i Tiranës”、“里约热内卢州”、“托斯卡纳”、“韦斯卡普”、“西开普省”“]” 然而,当我测试我的 SQL 时,我没有返回任何行。请协助。

WITH ProvinceList as (
    SELECT CAST (value AS nvarchar) name FROM STRING_SPLIT(SUBSTRING(@Provinces, 3, LEN(@Provinces)-3), ',')
)

SELECT {Site}.*
FROM {Site}

WHERE ({Site}.[Province] IN -- Get all Province names in list sent
        (SELECT name 
        FROM ProvinceList))
            
ORDER BY {Site}.[Name] ASC 

在 STRING_SPLIT 之后,您的列表将包含 “东开普省”“自由州” 加上引号。您的 table 中很可能没有引号,因此您需要从输入中删除这些字符。

SET @Provinces = REPLACE(@Provinces, '"', '')
WITH ProvinceList as (
    SELECT CAST (value AS nvarchar) name FROM STRING_SPLIT(SUBSTRING(@Provinces, 2, LEN(@Provinces)-2), ',')
)