我打算查询大于5个汉字的字段,所以我写了一条这样的语句:
select top 1000
Name from
hotel.dbo.cdsgus
where
len(ltrim(rtrim(name)))>5
但是返回的结果确差点亮瞎了我的狗眼。。。。
请看下图
为什么会有两个汉字和三个汉字的。。。忧桑!
我的sqlserver是2008,系统是XP,嗯…字段类型是nvarchar(2000),请各位伙伴帮忙解答
在sqlserver中,一个字符是占几个字节的,你去查一下,然后再换算一下。
select top 1000
Name
Len(Name) as x
from
hotel.dbo.cdsgus
where
len(ltrim(rtrim(name)))>5
这样写结果是什么?
按理说不会。
用len没问题,看看字符最后是不是有回车换行或者指标符
select * from chartable
where charindex(char(10),t3)>0
select * from chartable
where charindex(char(13),t3)>0
select * from chartable
where charindex(char(9),t3)>0
同意danielinbiti,检查是否有非打印字符,比如回车,直接复制执行下面的语句,会发现结果是长度是10 而不是2,就算是用了LTRIM和RTRIM
SELECT LEN(LTRIM(RTRIM('
王刚')))