有人能解释一下为什么select len(0x0a000b)返回3吗?len计算字节吗?为什么select left(0x0a000b,1)不返回任何内容?我期望0x0a (如果len计算字节数)...
我正在使用mssql 2005
感谢康斯坦丁
发布于 2010-09-08 02:52:18
select len(0x0a000b)返回由三个字节0x0a、0x00和0x0b表示的字符串的长度。
select left(0x0a000b, 1)返回字符串最左边的字符,即换行符。
请注意,select case when left(0x0a000b, 1) = 0x0a then 1 else 0 end返回1,这表明您确实获得了换行符。
编辑:有关更多详细信息,请参阅下面的评论。
发布于 2010-09-08 02:50:31
left是字符串运算符,因此它不能以您期望的方式处理二进制数据,请改用子字符串(@v,1,1
另一方面,len返回二进制数据的长度(与其他数据类型不同);尽管字符串有一个非常有趣的例外,当我们使用此命令测量字符串的长度时,它首先对其执行rtrim;因此len('a ')将返回1
发布于 2010-09-08 02:52:42
谁能解释一下为什么select len(0x0a000b)返回3
3个字符
0x表示它是二进制的
0a字符%1
00字符2
0b字符3
你有一个不可打印的字符,我相信0a是一个回车符,运行这个
select left(0x45000b, 1)https://stackoverflow.com/questions/3661641
复制相似问题