2017-07-02 116 views
-2

我需要在指定字符处拆分SQL中的字符串。我需要在“(”字符。我使用这种方式来分割TEX_TEXT场,但在结果“(”是存在的。在SQL中指定字符处拆分字符串

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

enter image description here

我需要的结果没有“( '字符内,像这样:80,80前卫等等....在此先感谢

+0

如何做'...工作更快 - 1',或可能甚至'... - 2'? –

+0

你需要什么调整做出的'left'那么第二个参数? –

回答

1

试试这个演示使用IIF,左,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 

结果

0123。
80 
79 
100 Avant 
1

最简单的事情就是将其包装在REPLACE()函数中。当你正在分裂,并采取第一部分,你可以肯定只会永远是开括号中出现一次。

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

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

这种方法的最好的部分是,你并不需要应用逻辑之前测试数据,因此它应该比使用IIF语句