在SQL中拆分指定字符的字符串

时间:2017-07-02 21:35:42

标签: sql string split

我需要在SQL中拆分指定字符的字符串。我需要在'('字符处)拆分TEX_TEXT字段。我这样使用它,但结果是'('在那里。

Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT ) ) as GroupName,

enter image description here

我需要的结果没有'(' charcter,像这样:80,80 Avant等等......提前致谢!

2 个答案:

答案 0 :(得分:1)

试试这个演示。使用IIF,LEFT和CHARINDEX

declare @mytable table (col1 varchar(20))

insert into @mytable
values ('80 (xxx 123)'),('79'),('100 Avant (d1)')


SELECT
  LEFT(col1,        
             iif(
              CHARINDEX('(', col1) -- get location of 'C'
                  = 0,       -- if charindex is 0 then get length of the string
                    LEN(col1), -- thus this, if you don't check for no '(' then using charindex will return an error
                 CHARINDEX('(', col1) - 1) -- otherwise get the location of '(' minus 1
       )
FROM @mytable

结果

80 
79
100 Avant 

答案 1 :(得分:1)

最简单的方法是将其包装在REPLACE()函数中。当你分裂并占据第一部分时,你可以确定只会出现一个左括号。

REPLACE(Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT ) ), '(', '') as GroupName

要做的最后一件事是RTRIM以确保没有尾随空格。

这种方法最好的部分是你在应用逻辑之前不需要测试数据,所以它应该比使用IIf语句更快地工作