在SQL Server中提取String的一部分

时间:2014-04-29 07:01:36

标签: sql sql-server sql-server-2008 tsql

我有一个以此格式xxxxxxx(xxxxx)返回字符串值的字段。现在我需要提取字符串里面的内容()以及之前的()。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

请尝试:

declare @var nvarchar(100)='xxxxxxx(xxxxx)'

select @var, 
    LEFT(@var, charindex('(', @var, 1)-1), 
    replace(right(@var, charindex('(', @var, 1)-1), ')', '')

答案 1 :(得分:0)

declare @str varchar(100)

set @str='xxxxx(aaa)'

---- extracts xxxxx
select SUBSTRING(@str,0,CHARINDEX('(',@str)) 

---- extracts aaa
select SUBSTRING(@str,CHARINDEX('(',@str)+1,CHARINDEX(')',@str)-CHARINDEX('(',@str)-1)

答案 2 :(得分:0)

`  对sql server没什么了解。

在oracle中你可以实现以下目标:

SELECT SUBSTR('xxxxxxx(xxxxx)',0,instr('xxxxxxx(xxxxx)','(')-1)            AS first_part,
SUBSTR('xxxxxxx(xxxxx)',instr('xxxxxxx(xxxxx)','(')+1,instr('xxxxxxx(xxxxx)',')')-instr('xxxxxxx(xxxxx)','(')-1) AS second_part
FROM dual;

所以尝试找到相应的语法。 substr是自我解释的。 并且instr返回给定字符串中第一次出现的字符的位置。

答案 3 :(得分:0)

TEchDo答案很完美,他错过了第二列的另一个replace函数。

declare @var nvarchar(100)='xxxxxxx(xxxxx)'  

select @var AS Source, LEFT(@var, charindex('(', @var, 1)-1) AS FirstColumn,   
replace(replace(right(@var, charindex('(', @var, 1)-1), ')',''),'(','') AS SecondColumn