我需要在SQL中拆分指定字符的字符串。我需要在'('字符处)拆分TEX_TEXT字段。我这样使用它,但结果是'('在那里。
Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT ) ) as GroupName,
我需要的结果没有'(' charcter,像这样:80,80 Avant等等......提前致谢!
答案 0 :(得分:1)
试试这个演示。使用IIF,LEFT和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
结果
80
79
100 Avant
答案 1 :(得分:1)
最简单的方法是将其包装在REPLACE()函数中。当你分裂并占据第一部分时,你可以确定只会出现一个左括号。
REPLACE(Left(TEX_TEXT, CHARINDEX('(', TEX_TEXT ) ), '(', '') as GroupName
要做的最后一件事是RTRIM以确保没有尾随空格。
这种方法最好的部分是你在应用逻辑之前不需要测试数据,所以它应该比使用IIf语句更快地工作