将字符串转换成在SQL

问题描述:

为十六进制我正在寻找一种方式来改变一个真正的字符串转换成它在SQL十六进制值。我在寻找的东西是Informix的友好,但我显然会喜欢的东西数据库中立将字符串转换成在SQL

这是我现在使用的选择:

SELECT SomeStringColumn from SomeTable 

这里是选择我想用: 从SomeTable

遗憾的是没有选择HEX(SomeStringColumn)是一种简单的... Informix的给我留言: 字符到数字转换错误

有什么想法?

+1

Hex函数是一个整数(或INT8或BIGINT)转换为十六进制字符串。你在寻找什么作为HEX_STRING(“xyz”)的输出? – 2008-10-21 15:35:34

+0

另外,选择一个答案是有礼貌的 - 或者如果没有回答你的问题,编辑你的问题是可以理解的,这样才能理解。你应该瞄准选择一个最好的答案 - 请。 – 2008-10-24 23:33:23

+0

你应该改写你的问题。显然你不想把字符串解释为数字(“12” - > 12)。看来你想要将底层字节转换为十六进制。 (“abc” - > hex)。你想要ASCII码,Unicode还有其他的东西吗?请明确点。 – colithium 2009-06-28 03:09:15

您可以用演员和fn_varbintohexstr?

​​

我不确定您的数据库系统中是否具有该功能,它在MS-SQL中。

我只是想在我SQL服务器MMC我的表之一:

SELECT  master.dbo.fn_varbintohexstr(CAST(Addr1 AS VARBINARY)) AS Expr1 
FROM   Customer 

这和预期一样。可能是我所知道的在MS-SQL master.dbo.fn_varbintohexstr什么,可能是类似于Informix的十六进制()函数,因此可能尝试:

SELECT  hex(CAST(Addr1 AS VARBINARY)) AS Expr1 
FROM   Customer 

如果有可能为你做这在数据库客户端代码可能会更容易。

否则,错误可能意味着,当你想到建于十六进制的功能不能与你的价值观工作。我会仔细检查输入值是否被修剪,并且首先以格式,这可能很简单。然后,我会征询描述十六进制的功能数据库文档,看看它的预期投入将和比较,您的一些价值观,并找出区别是什么,以及如何改变你的价值观相匹配的预期投入。

一个简单的谷歌搜索“Informix的十六进制功能”提出了第一个结果页面的一句话:“必须是文字整数或返回一个整数一些其他的表达”。如果你的数据类型是一个字符串,首先将字符串转换为一个整数。看起来你乍看之下你做了一些与演员功能(我不知道这一点)。

select hex(cast SomeStringColumn as int)) from SomeTable 

怎么样:

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

旧的文章,但对我来说我也必须删除十六进制的0x部分,所以我使用下面的代码。 (我使用MS SQL)

convert(varchar, convert(Varbinary(MAX), YOURSTRING),2)