我需要在指定字符處拆分SQL中的字符串。我需要在「(」字符。我使用這種方式來分割TEX_TEXT場,但在結果「(」是存在的。在SQL中指定字符處拆分字符串
Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT)) as GroupName,
我需要的結果沒有「( '字符內,像這樣:80,80前衛等等....在此先感謝
我需要在指定字符處拆分SQL中的字符串。我需要在「(」字符。我使用這種方式來分割TEX_TEXT場,但在結果「(」是存在的。在SQL中指定字符處拆分字符串
Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT)) as GroupName,
我需要的結果沒有「( '字符內,像這樣:80,80前衛等等....在此先感謝
試試這個演示使用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
最簡單的事情就是將其包裝在REPLACE()函數中。當你正在分裂,並採取第一部分,你可以肯定只會永遠是開括號中出現一次。
REPLACE(Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT)), '(', '') as GroupName
最後要做的事情是RTRIM確保沒有尾隨空格。
這種方法的最好的部分是,你並不需要應用邏輯之前測試數據,因此它應該比使用IIF語句
如何做'...工作更快 - 1',或可能甚至'... - 2'? –
你需要什麼調整做出的'left'那麼第二個參數? –