Иногда помогает JSON. Вы можете попытаться преобразовать введенный текст в действительный массив JSON (A_1234_BCD_8977_90888
в ["A","1234","BCD","8977","90888"]
) и проанализировать этот массив с помощью OPENJSON()
. С помощью этого приложения вы можете получить каждую часть входного текста по позиции:
Заявление:
DECLARE @position int = 2
DECLARE @text varchar(1000) = 'A_1234_BCD_8977_90888'
SELECT [value]
FROM OPENJSON(CONCAT('["', REPLACE(@text, '_', '","'), '"]'))
WHERE CONVERT(int, [key]) + 1 = @position
Результат:
1234
Обратите внимание, что STRING_SPLIT()
- это здесь не вариант, потому что порядок не гарантированно соответствует порядку подстрок во входной строке.