关于sql中字符串转16进制才可以使用的问题。

潜修中 结界师  2015-07-17 09:33:10
今天遇到个问题查询一个表的数据时,select * 能看见要查询的项,但是用where xx=xxx的时候就无法显示,一定要用where xx=0xxxxxxx(xxx的16进制),搜索引擎已找过,无法解决我的疑问,所以来这询问,希望有人能解答下我的疑惑。
...全文
214 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Tiger_Zhao 2015-07-17
你的SQL语句中字符串两边没加单引号吧!
  • 打赏
  • 举报
回复
潜修中 2015-07-17
可能是我没表述清楚: 情况是这样的: where 列名=字符串(这样是反馈错误) 但是: where 列名=0x(字符串转换成16进制后)这是可以正常反馈的 这是什么原因?
  • 打赏
  • 举报
回复
中国风 2015-07-17
16进制需要在条件上用0x开头 估计楼主是数据类型为Unicode和非Unicode引起的 这里测试个例子
DECLARE @T TABLE(Col VARBINARY(10))
INSERT INTO @T
        ( Col )
VALUES  (0xD6D0B9FA)

SELECT * FROM @T WHERE Col=CAST('中国' AS varbinary(10))
SELECT * FROM @T WHERE Col='中国'	--有数据
SELECT * FROM @T WHERE Col=N'中国'  --没数据

  • 打赏
  • 举报
回复
中国风 2015-07-17
xx为16进制 这是由于数据类型的优先级决定的,如果是int等数字型可以这样用
  • 打赏
  • 举报
回复
潜修中 2015-07-17
感谢楼上,解决了我的问题,感谢版主的热心回复
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-07-17 09:33
社区公告
暂无公告