字符串anyname#在name列中。
我需要忽略#。
我试着使用LEFT (name, CHARINDEX ('#', name) - 1),但它没有工作,但是使用LEFT (name, LEN (name) - 1)正常工作。
CHARINDEX和LEN都返回整数值。
你能解释一下为什么我不能在- 1和CHARINDEX一起使用,但是与LEN一起使用它吗?
发布于 2018-09-15 20:37:06
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发布于 2018-09-15 20:28:52
虽然不是你想要的解释,但是为什么你不能像这样使用TRIM()
SELECT TRIM( '#' FROM 'anyname#') AS colhttps://stackoverflow.com/questions/52348556
复制相似问题