字符串分词,通常是指在一个长字符串中,有多个词语或者单词被逗号(,)或者竖号()分割开来。当我们需要判断这段字符串中,是否有我们想要查找的字或者词时,我们该怎么操作。
有两种方案,一种是自己写分割函数,第二种是用 SQL Server 自带的函数
自己写分割函数,我会这么写:
DECLARE @stringList VARCHAR(MAX) = '1,2,3,4,5,6,7'
DECLARE @XML_String xml =Convert(XML,''+ Replace(@stringList,',','')+'')
SELECT c.value('.','INT') AS Id
FROM @XML_String.nodes('/List/Id') T(c)
如果是用 SQL Server 自带的函数,用 String_Split:
DECLARE @stringList VARCHAR(MAX) = '1,2,3,4,5,6,7'
SELECT * FROM string_split(@stringList,',') T
但是这个函数,很怪,需要开启数据库兼容模式到 130,否则是不能被识别的:
SELECT name,compatibility_level
FROM sys.databases
WHERE name='AdventureWorks2014'
ALTER DATABASE AdventureWorks2014 Set Compatibility_Level = 130
领取专属 10元无门槛券
私享最新 技术干货