如何使用分隔符分割字符串



我试图将参数/变量@pVehicles分成3个不同的行,然后搜索这些值是否在列vehicle_type中。目前这个脚本只返回字符串中的第一个值,即'Car'。我如何得到脚本拆分字符串,然后搜索和返回这些拆分值?

脚本如下:

declare @pVehicles varchar(max);
set @pVehicles= 'Car, Bus, Plane'
    SELECT 
        v.ID, v.TYPE, v.COLOR
        FROM clients c
        INNER JOIN vehicles AS v ON v.id = c.vehicle_id
        WHERE  v.vehicle_type IN         
        (select value
                  from string_split(@pVehicles), ',')
                 )

我试图将参数/变量@pVehicles分成3个不同的行,然后搜索这些值是否在列vehicle_type中。目前这个脚本只返回字符串中的第一个值,即'Car'。我如何得到脚本拆分字符串,然后搜索和返回这些拆分值? 例子:

表当前返回:

ID    TYPE   COLOR
1      Car     Blue
2      Car     Red
5      Car     Yellow

 我想要它返回什么:

ID    TYPE   COLOR
1      Car     Blue
2      Car     Red
3      Bus     Yellow
4      Plane   White
5      Car     Yellow
6      Plane   Yellow

你需要使用

WHERE      v.vehicle_type IN
(SELECT LTRIM(value)
FROM    string_split(@pVehicles), ',') )

用于删除列表中以逗号分隔后的第二项及后续项的前导空格。' Bus'不匹配'Bus'

(你不能在2012标记如果string_split是为你工作,除了这个)

最新更新