Найти значения между двумя символами '(' и ')' - PullRequest
0 голосов
/ 22 марта 2019

У меня есть строковое значение 'Маркес, Габриэль Гарсия.(A123456).Мне нужно извлечь значения, которые появляются в «(» и «)».Другими словами, мне нужен результат, чтобы сказать: «A123456»

Я пытался использовать правильную функцию, но это не привело к желаемому результату.

select right('Marquez, Gabriel Garcia. (A123456)' ,  8)

Ответы [ 2 ]

2 голосов
/ 22 марта 2019
DECLARE @str VARCHAR(100) = 'Marquez, Gabriel Garcia. (A123456)'

SELECT  SUBSTRING(@str,CHARINDEX('(',@str) +1 ,CHARINDEX(')',@str) - CHARINDEX('(',@str) - 1)
1 голос
/ 22 марта 2019

В SQL Server сложно работать со строками.Я считаю, что cross apply упрощает логику:

select left(v2.str, charindex(')', v2.str) - 1) as stuff_between_parens
from (values ('Marquez, Gabriel Garcia. (A123456)')) v(str) cross apply
     (values (stuff(str, 1, charindex('(', str), ''))) v2(str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...