2017-07-02 59 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語句