我需要在指定字符处拆分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'那么第二个参数? –