-1
我有這些字符串:如何獲取SQL Server中字符的第二個實例後的值?
XXXXX - XXXXXXX - XXXX
XXXXXXX - XXXXXXX
我需要抓住的第二個實例後的值 ' - '
所以在上述情況下,我會得到:
XXXXXXX
XXXXXXX
我如何在SQL這樣做呢?
我有這些字符串:如何獲取SQL Server中字符的第二個實例後的值?
XXXXX - XXXXXXX - XXXX
XXXXXXX - XXXXXXX
我需要抓住的第二個實例後的值 ' - '
所以在上述情況下,我會得到:
XXXXXXX
XXXXXXX
我如何在SQL這樣做呢?
SUBSTRING
和CHARINDEX
是你的朋友在這裏。 試試這個:
DECLARE @str VARCHAR(MAX) = 'XXXXX - XXXX - XXX - XXXX'
SELECT SUBSTRING(SUBSTRING(@str, CHARINDEX('-', @str) + 1, LEN(@str)), CHARINDEX('-', @str) + 1, LEN(@str))
返回XXX - XXXX
這是一個基於XML/XQuery的解決方案:
SELECT *, y.ColB.query('root/i[position() gt 2]').value('.', 'NVARCHAR(100)') AS SomethingVeryImportant
FROM (
SELECT 'XXXXX - XXXX - XXX - XXXX'
UNION ALL
SELECT 'XXXX - XXX - XXXXXXX'
) AS x(ColA)
CROSS APPLY (SELECT CONVERT(XML, N'<root><i>' + REPLACE(x.ColA, N'-', N'-</i><i>') + N'</i></root>')) AS y(ColB)