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