首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >varbinary的镜头

varbinary的镜头
EN

Stack Overflow用户
提问于 2010-09-08 02:45:19
回答 3查看 1.4K关注 0票数 7

有人能解释一下为什么select len(0x0a000b)返回3吗?len计算字节吗?为什么select left(0x0a000b,1)不返回任何内容?我期望0x0a (如果len计算字节数)...

我正在使用mssql 2005

感谢康斯坦丁

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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,这表明您确实获得了换行符。

编辑:有关更多详细信息,请参阅下面的评论。

票数 5
EN

Stack Overflow用户

发布于 2010-09-08 02:50:31

left是字符串运算符,因此它不能以您期望的方式处理二进制数据,请改用子字符串(@v,1,1

另一方面,len返回二进制数据的长度(与其他数据类型不同);尽管字符串有一个非常有趣的例外,当我们使用此命令测量字符串的长度时,它首先对其执行rtrim;因此len('a ')将返回1

票数 3
EN

Stack Overflow用户

发布于 2010-09-08 02:52:42

谁能解释一下为什么select len(0x0a000b)返回3

3个字符

0x表示它是二进制的

0a字符%1

00字符2

0b字符3

你有一个不可打印的字符,我相信0a是一个回车符,运行这个

代码语言:javascript
复制
select left(0x45000b, 1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3661641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档