2017-07-02 10 views
-2

指定した文字でSQLで文字列を分割する必要があります。私は「(」文字。私はそれを使用するこの方法でTEX_TEXTフィールドを分割する必要がありますが、結果には「(」がある。 指定された文字をSQLで分割する

enter image description here

Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT)) as GroupName, 
私はせずに結果を必要とします「(このような「charcter、:!80、80アバントなど....事前に感謝

+0

どうやっについて '...を使用するよりも速く動作する必要がありますので、あなたは、ロジックを適用する前に、データをテストする必要がないということです'... - 2'でも? –

+0

'left'の2番目のパラメータには、どのような調整が必要ですか? –

答えて

1

このデモを試す

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 

結果

IIF、LEFTとCHARINDEXを使用しました。
80 
79 
100 Avant 
1

最も簡単なことは、REPLACE()関数でラップすることです。あなたが分割して最初の部分を取っているときに、括弧が1つだけ出現することが確実になります。

最後に行うべきことは、後続のスペースがないことを確実にするためにRTRIM全体です。 1 '、または可能性 -

このアプローチの最良の部分は、それがのIIF文で

関連する問題