MySQLで文字列を64ビット値(bigint)にハッシュしようとしています。私はバイナリ文字列として128ビットのハッシュを返すMD5()関数を認識しています。私はちょうどこの結果の下または上の64ビットを取ることを嬉しく思う。しかし、私はどのようにバイナリ文字列型から任意の種類の数値型に取得する方法を把握することはできません。すべてのポインタ?MySQLのバイナリ文字列をbigintに変換しますか?
8
A
答えて
14
数に変換するために10とCAST
をベースにベース16からMD5ハッシュを変換するCONV()
機能を使用します。
select cast(conv(substring(md5(id), 1, 16), 16, 10) as unsigned integer) from SomeTable;
2
CREATE FUNCTION dbo.HexStrToVarBinary(@hexstr varchar(8000))
RETURNS varbinary(8000)
AS
BEGIN
DECLARE @hex char(1), @i int, @place bigint, @a bigint
SET @i = LEN(@hexstr)
set @place = convert(bigint,1)
SET @a = convert(bigint, 0)
WHILE (@i > 0 AND (substring(@hexstr, @i, 1) like '[0-9A-Fa-f]'))
BEGIN
SET @hex = SUBSTRING(@hexstr, @i, 1)
SET @a = @a +
convert(bigint, CASE WHEN @hex LIKE '[0-9]'
THEN CAST(@hex as int)
ELSE CAST(ASCII(UPPER(@hex))-55 as int) end * @place)
set @place = @place * convert(bigint,16)
SET @i = @i - 1
END
RETURN convert(varbinary(8000),@a)
END
GO
+0
ナイス! –
+0
もうひとつの方法をお願いします:D:@ :) –
関連する問題
- 1. 分数をバイナリ文字列に変換しますか?
- 2. BigintをGoの文字列に変換する
- 3. バイナリをJavaの文字列値に変換します
- 4. 文字列を列名に動的に変換します。 MySQL
- 5. バイナリ文字列をバイト配列に変換する
- 6. 文字列をバイナリに変換する最速の方法は?
- 7. バイナリ文字列を2の補数に変換する
- 8. PHPのバイナリ文字列を整数に変換する
- 9. Teradataで文字列をバイナリに変換するには?
- 10. バイナリ文字列を整数に変換する
- 11. バイナリファイルを読み込んでバイナリ文字列に変換する
- 12. MySQLはリテラル文字列を式に変換できますか?
- 13. Sql Serverでは、バイナリ文字列をバイナリに変換する方法は?
- 14. 文字列[]〜バイト[] 2文字をバイトに変換しますか?
- 15. Pythonは文字列リテラルを文字列に変換します
- 16. MySQLの文字列変換リターン0
- 17. フレンチ文字をphpの文字列に変換します
- 18. 対応するASCII文字列変換へのバイナリ
- 19. BigInt変換(gmp Bigint to botan bigint)
- 20. DevExpress TcxFilterOperatorKindを文字列に変換したり、文字列から変換したりできますか?
- 21. UTF-8エンコーディングを使用して文字列をバイナリに変換する
- 22. は、私はBIGINTに(16進数を表す)文字列を変換するいくつかのトラブルを取得していますBIGINT
- 23. MySQLの比較バイナリ照合対バイナリ文字列
- 24. 配列を文字列に変換しますか? c#
- 25. 文字列をJavaの文字列配列に変換する
- 26. 文字列 '010101010'をPHPの実際のバイナリ文字列に変換する方法
- 27. 文字列をテキストのNSStringに変換しますか?
- 28. 文字列を2つのintに変換しますか?
- 29. C++を1文字から文字列に変換しますか?
- 30. 16進数の文字列を文字に変換しますか?
ニース、それは私が探しているものです。私はキャストを必要としないか、またはbigintにキャストしたいと思うが、conv()関数は本当に私が欠けていたものだった。 –
最終的なメモ。私はJavaでこの数値に長い時間アクセスしていました。 Javaの整数型は署名され、conv()の結果は常に正の値をとるため、場合によってはオーバーフローすることになります。これを署名付きロングとして使用する場合は、キャストが必要であり、 'signed'へのキャストはそのトリックを行います。 –