我有一个字符串值'Marquez,Gabriel Garcia。 (A123456)”。我需要提取出现在'('和')'中的值。换句话说,我需要结果显示为'A123456'
我尝试使用正确的函数,但是没有产生期望的结果。
select right('Marquez, Gabriel Garcia. (A123456)' , 8)
答案 0 :(得分:2)
DECLARE @str VARCHAR(100) = 'Marquez, Gabriel Garcia. (A123456)'
SELECT SUBSTRING(@str,CHARINDEX('(',@str) +1 ,CHARINDEX(')',@str) - CHARINDEX('(',@str) - 1)
答案 1 :(得分:1)
在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)