在两个字符'('和')'

时间:2019-03-22 20:25:45

标签: sql sql-server

我有一个字符串值'Marquez,Gabriel Garcia。 (A123456)”。我需要提取出现在'('和')'中的值。换句话说,我需要结果显示为'A123456'

我尝试使用正确的函数,但是没有产生期望的结果。

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

2 个答案:

答案 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)