我正在使用SQL Server 2008 R2
这是我拥有的价值:
DECLARE @DBB varchar(200) = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g'
返回2个外部值很容易:
SELECT LEFT(@DBB, CHARINDEX('.', @DBB)-1)
SELECT RIGHT(@DBB, CHARINDEX('.', @DBB)-1)
如何更改脚本以选择值:
1. 'Bg2g3ghh3'
2. 'Chggh3663'
3. 'Dh1jhg23'
使用CHARINDEX只会带回(LEFT)7和(RIGHT)9。
由于
答案 0 :(得分:1)
使用此功能。
DECLARE @param NVARCHAR(MAX)
SET @param = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g'
SELECT
Split.a.value('.', 'VARCHAR(100)') AS CVS
FROM
(
SELECT CAST ('<M>' + REPLACE(@param, '.', '</M><M>') + '</M>' AS XML) AS CVS
) AS A CROSS APPLY CVS.nodes ('/M') AS Split(a)
答案 1 :(得分:1)
尝试这个:
DECLARE @string VARCHAR(MAX),
@Split CHAR(1),
@X xml
SELECT @string = 'A2gg3h.B2g3ghh3.Cggh3663.D1jhg23.Eh2hjj2g',
@Split = '.'
SELECT @X = CONVERT(xml,'<root><s>' + REPLACE(@string,@Split,'</s><s>') + '</s></root>')
SELECT T.c.value('.','varchar(max)') AS Result
FROM @X.nodes('/root/s') T(c)