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

潜修中 2015-07-17 09:33:10
今天遇到个问题查询一个表的数据时,select * 能看见要查询的项,但是用where xx=xxx的时候就无法显示,一定要用where xx=0xxxxxxx(xxx的16进制),搜索引擎已找过,无法解决我的疑问,所以来这询问,希望有人能解答下我的疑惑。
...全文
395 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
感谢楼上,解决了我的问题,感谢版主的热心回复

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧