无需使用STRING_SPLIT
函数就可以在代码中分割定界字符串。
这是在兼容模式110(SQL Server 2012)中运行的SQL Server 2016中,遗憾的是无法更改。
SELECT
rsys.Netbios_Name0 As Name,
(SELECT bg.Name
FROM vSMS_BoundaryGroup bg
WHERE bg.GroupID = value) As 'Boundary Group',
rsys.Full_Domain_Name0 AS Domain
FROM
v_R_System rsys
INNER JOIN
v_GS_BOUNDARYGROUPCACHE bgc ON bgc.ResourceID = rsys.ResourceID
OUTER APPLY
STRING_SPLIT(bgc.BoundaryGroupIDs0, ',')
我收到此错误:
第208条消息,第16级,状态1,第1行
无效的对象名称“ STRING_SPLIT”
答案 0 :(得分:0)
创建了以下功能:
使用XML 创建一个如下所示的表值函数,该函数使用Sql XML功能分割字符串。
CREATE FUNCTION [dbo].StringSplitXML
(
@String VARCHAR(MAX), @Separator CHAR(1)
)
RETURNS @RESULT TABLE(Value VARCHAR(MAX))
AS
BEGIN
DECLARE @XML XML
SET @XML = CAST(
('<i>' + REPLACE(@String, @Separator, '</i><i>') + '</i>')
AS XML)
INSERT INTO @RESULT
SELECT t.i.value('.', 'VARCHAR(MAX)')
FROM @XML.nodes('i') AS t(i)
WHERE t.i.value('.', 'VARCHAR(MAX)') <> ''
RETURN
END
下面的示例显示了如何使用上面的函数分割逗号分隔的字符串
SELECT *
FROM StringSplitXML('Basavaraj,Kalpana,Shree',',')
SELECT
rsys.Netbios_Name0 As Name
, (SELECT
bg.Name
FROM vSMS_BoundaryGroup bg
WHERE bg.GroupID = value) As 'Boundary Group',
rsys.Full_Domain_Name0 AS Domain
FROM v_R_System rsys
INNER JOIN v_GS_BOUNDARYGROUPCACHE bgc ON bgc.ResourceID = rsys.ResourceID
OUTER APPLY StringSplitXML(bgc.BoundaryGroupIDs0, ',')
order by rsys.Netbios_Name0