SQL Server 2016新增:string_split函式(拆分字串)
阿新 • • 發佈:2019-02-03
SQL Server 2016新增了string_split函式,專門用來拆分字串。
之前,在開發中經常會有拆分字串的需求,要麼用xml來實現, 要麼寫個自定義函式來實現。
所以,期盼了很久,總算有這個函數了,必須要SQL Server開發組點個贊。
希望以後還能有個string_join函式(名稱類似python中的字串合併函式join),專門用來合併字串,而非用xml path,或者是變數累加的方法。
剛查了下,在SQL Server 2017RTM版,新增函式string_agg,專門用來合併字串,這速度夠快的了。
言歸正傳。
一、建表
CREATE TABLE test ( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, description VARCHAR(100) null ); INSERT INTO dbo.test VALUES (1, '小張','誠實,勇敢'), (2, '小李','美女,善良,真誠'), (4, '小陳','宅男'), (5, '小楊','情商高,溫柔,卡哇伊')
二、拆分字串變數
三、拆分表中的列
SELECT t.id,
t.name,
t.description,
v.value
FROM test t
CROSS APPLY STRING_SPLIT(t.description, ',')v;
四、和in搭配使用
有些應用中,引數的值是不確定的,是用逗號拼接後,傳入sql中,這個時候string_split特別有用,可以和in搭配使用。
SELECT t.id, t.name, t.description FROM test t WHERE t.id IN (SELECT CAST(v.value AS INT) AS id FROM STRING_SPLIT('1,2,3', ',') v)
五、拆分+關聯
SELECT t.id,
t.name,
t.description
FROM test t
INNER JOIN STRING_SPLIT('1,2',',') v
ON t.id = CAST(v.value AS INT)