我试图将参数/变量@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
是为你工作,除了这个)