sql-server – MS SQL Server – 将十六进制字符串转换为整数
这个答案看起来像是同样的问题:
Convert integer to hex and hex to integer 对我来说不行 我无法使用MS SQL Server 2005 CAST或CONVERT将十六进制字符串转换为整数.我错过了一些小事吗?我已经广泛搜索,最好的我可以找到长时间的用户函数从十六进制字符串值到一个看起来像十进制int的东西.当然有一种简单的方法可以直接在使用内置函数的查询中执行此操作,而不是编写用户函数? 谢谢 编辑包括示例:
按预期工作,但
得到我 “将varchar值’0x89’转换为数据类型int时,转换失败. 一个额外的明确CAST:
执行,但返回813185081. 将’Int’,’Decimal’替换为’Varbinary’结果会导致错误.通常,如果需要,似乎是数字的字符串被解释为数字,但在这种情况下不被解释,并且似乎不是识别HEX的CAST.我想认为有一些简单明了的东西,我刚刚错过了.
总结一下:我想要一个十六进制字符串,它是一个表中的值,并将其显示为十进制整数的查询结果的一部分,仅使用系统定义的函数而不是UDF. 解决方法感谢您提供一些更明确的例子.据我从文档和Google Googling中可以看出,如果没有UDF或其他程序代码,这在MSSQL 2005中是不可能的.在MSSQL 2008中,CONVERT()函数的style参数现在超过二进制数据,所以你可以这样直接执行:select convert(int,convert(varbinary,'0x89',1)) 在以前的版本中,您的选择是: >使用UDF(TSQL或CLR; CLR可能实际上更容易) 如果转换数据只是出于显示的目的,应用程序可能是最简单的解决方案:数据格式通常属于那里.如果您必须在查询中执行此操作,那么UDF最简单,但性能可能不是很好(我知道您说您最好不要使用UDF,但是不清楚为什么).我猜测升级到MSSQL 2008只是为了这可能是不现实的. 最后,FYI您所包含的版本号是Management Studio的版本,而不是您的服务器的版本号.为了得到这一点,使用select @@ version查询服务器本身或选择serverproperty(‘ProductVersion’). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |