我在名称列中有字符串 anyname#。
我需要忽略#。
我尝试使用LEFT (name, CHARINDEX ('#', name) - 1)
,但没有用,但是使用LEFT (name, LEN (name) - 1)
正常。
CHARINDEX
和LEN
都返回整数值。
您能解释为什么我不能将{strong>-1 与CHARINDEX
一起使用,而不能与LEN
一起使用吗?
答案 0 :(得分:0)
虽然不是您要寻找的解释,但为什么不能使用TRIM()
这样的功能
SELECT TRIM( '#' FROM 'anyname#') AS col
答案 1 :(得分:0)
LEFT (name,LEN(name) - 1)
将仅忽略最后的宪章。
LEFT (name, CHARINDEX('#', name) - 1)
将找到#
宪章显示的位置编号。
在您的情况下,我将使用replace
函数忽略# replace(name,'#','')
这里有一个示例#
没有显示在最后的宪章中。
CREATE TABLE T(name varchar(50));
INSERT INTO T VALUES ('anyn#ame');
select LEFT (name, CHARINDEX ('#', name) - 1),
LEFT(name, LEN (name) - 1),
replace(name,'#','')
from t