繁体   English   中英

在SQL Server中提取字符串的一部分

[英]Extracting a part of String in SQL Server

我有一个字段以xxxxxxx(xxxxx)格式返回字符串值。 现在,我需要提取()内以及()之前的字符串的内容。 我该如何实现?

请试试:

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

select @var, 
    LEFT(@var, charindex('(', @var, 1)-1), 
    replace(right(@var, charindex('(', @var, 1)-1), ')', '')
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)

`对sql server不太了解。

oracle中的bt可以实现以下目标:

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返回给定字符串中字符第一次出现的位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM