SQL Server之String_Split函數(SQL Server2016版本以上使用)


摘自:https://blog.csdn.net/sqlserverdiscovery/article/details/79187307

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)


————————————————
版權聲明:本文為CSDN博主「陽泉酒家小當家」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/sqlserverdiscovery/article/details/79187307


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM