12

SQLで本物の文字列を16進値に変換する方法を探しています。私はInformixに適したものを探していますが、明らかにデータベースに中立なものを好みます

これが私が今使っているセレクトです:

SELECT SomeStringColumn from SomeTable

これが私が使用したい選択です:SomeTableからのSELECT hex(SomeStringColumn)

残念ながら、それほど単純なものはありません... Informixは私にそのメッセージを与えます: 文字から数値への変換エラー

何か案が?

4

6 に答える 6

20

Cast と fn_varbintohexstr を使用できますか?

SELECT master.dbo.fn_varbintohexstr(CAST(SomeStringColumn AS varbinary)) 
FROM SomeTable

データベース システムにその機能があるかどうかはわかりませんが、MS-SQL にあります。

テーブルの1つで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
于 2008-10-20T17:55:37.980 に答える
9

以下はSql 2005で機能します。

select convert(varbinary, SomeStringColumn) from SomeTable
于 2009-10-28T14:53:28.543 に答える
0

どうですか:

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

>MS SQL 2005 でのみ動作します。

于 2012-01-19T16:30:25.713 に答える
0

コードでデータベース クライアントでこれを実行できる場合は、より簡単になる可能性があります。

それ以外の場合、エラーはおそらく、組み込みの 16 進関数が期待どおりに値を処理できないことを意味します。入力値がトリミングされていることを再確認し、最初の形式で、それは簡単かもしれません。次に、16 進関数について説明しているデータベースのドキュメントを参照し、期待される入力が何であるかを確認し、それをいくつかの値と比較して、違いと、期待される入力の値に一致するように値を変更する方法を見つけます。

「informix hex function」を単純に Google 検索すると、最初の結果ページに「Must be aliteral integer or some other expression that returns an integer」という文が表示されました。データ型が文字列の場合は、まず文字列を整数に変換します。一見、キャスト機能で何かをしているように見えます(これについてはわかりません)。

select hex(cast SomeStringColumn as int)) from SomeTable
于 2008-10-20T17:59:49.500 に答える