在SQL中将字符串转换为HEX

fillum 发布于 2018-05-16 hex 最后更新 2018-05-16 15:19 159 浏览

我正在寻找一种方法将真正的字符串转换为SQL中的十六进制值。我正在寻找一些对Informix友好的东西,但我显然更喜欢一些与数据库无关的东西 这里是我现在使用的选择:

SELECT SomeStringColumn from SomeTable
这里是我想要使用的选择:     从SomeTable中选择十六进制(SomeStringColumn) 不幸的是,没有那么简单...... Informix给了我这个信息: 字符到数字转换错误 任何想法?
已邀请:

raut

赞同来自:

你可以使用Cast和fn_varbintohexstr?

SELECT master.dbo.fn_varbintohexstr(CAST(SomeStringColumn AS varbinary)) 
FROM SomeTable
我不确定你的数据库系统中是否有这个功能,它在MS-SQL中。 我只是在我的一个表上的SQL服务器MMC中试过它:
SELECT     master.dbo.fn_varbintohexstr(CAST(Addr1 AS VARBINARY)) AS Expr1
FROM         Customer
这按预期工作。可能我在MS-SQL上知道的master.dbo.fn_varbintohexstr可能类似于informix hex()函数,所以可能试试:
SELECT     hex(CAST(Addr1 AS VARBINARY)) AS Expr1
FROM         Customer

noptio

赞同来自:

如果您可以在代码中的数据库客户端中执行此操作,则可能会更容易。 否则,错误可能意味着内置的十六进制函数不能像你期望的那样处理你的值。我会仔细检查输入值是否被修剪,并且首先以格式,这可能很简单。然后,我会查阅描述十六进制函数的数据库文档,看看它的期望输入是什么,并将其与您的某些值进行比较,找出差异是什么,以及如何更改您的值以匹配预期输入。 一个简单的谷歌搜索“informix十六进制功能”提出了第一个结果页面,并带有这样的句子:“必须是一个文字整数或其他返回整数的表达式”。如果你的数据类型是一个字符串,首先将字符串转换为一个整数。看起来你乍看之下你做了一些与演员功能(我不知道这一点)。

select hex(cast SomeStringColumn as int)) from SomeTable

ksit

赞同来自:

关于什么:

declare @hexstring varchar(max);
set @hexstring = 'E0F0C0';
select cast('' as xml).value('xs:hexBinary( substring(sql:variable("@hexstring"), sql:column("t.pos")) )', 'varbinary(max)')
from (select case substring(@hexstring, 1, 2) when '0x' then 3 else 0 end) as t(pos)
我在这里看到这个: http://blogs.msdn.com/b/sqltips/archive/2008/07/02/converting-from-hex-string-to-varbinary-and-vice-versa.aspx Sorrry,仅适用于MS SQL 2005

rut

赞同来自:

旧帖子但在我的情况下,我也不得不删除十六进制的0x部分,所以我使用下面的代码。 (我正在使用MS SQL) convert(varchar, convert(Varbinary(MAX), YOURSTRING),2)