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. 分数をバイナリ文字列に変換しますか?
- 3. バイナリ文字列をテキスト文字列に変換する
- 4. BigintをGoの文字列に変換する
- 5. バイナリをJavaの文字列値に変換します
- 6. データフレーム内の文字列値をバイナリ値に変換します
- 7. SAS:文字列のバイナリを文字に変換する
- 8. 文字列をBigIntデータフレームスパークスカラーに変換する
- 9. 変換文字列のバイナリPythonのデータフレーム
- 10. 任意のファイルをバイナリ文字列に変換し、バイナリからファイルに変換する
- 11. 文字列を列名に動的に変換します。 MySQL
- 12. 16進値の文字列をバイナリの文字列に変換する
- 13. バイナリ文字列をバイト配列に変換する
- 14. ゲームメーカーの文字列をバイナリ表現に変換するには?
- 15. 文字列を文字列に変換しますか?
- 16. C++は文字列入力からバイナリを10進数に変換します
- 17. バイナリ文字列を2の補数に変換する
- 18. HTTPリクエスト用のバイナリ(Excel)データを文字列に変換する
- 19. 文字列をバイナリのシーケンスに変換する
- 20. 文字列をバイナリに変換する最速の方法は?
- 21. PHPのバイナリ文字列を整数に変換する
- 22. バイナリ文字列をビットマップに変換するには?
- 23. Teradataで文字列をバイナリに変換するには?
- 24. バイナリ文字列をバイトに変換するには?
- 25. MySQLはリテラル文字列を式に変換できますか?
- 26. Python struct.unpack - バイナリ文字列リテラルをアスキーテキストファイルに変換する
- 27. バイナリ文字列を同じ表現でintに変換する
- 28. 文字列をバイナリbase64に変換する
- 29. 整数をcでバイナリ文字列に変換する
- 30. バイナリ文字列をIEEE 754 floatに変換する
ニース、それは私が探しているものです。私はキャストを必要としないか、またはbigintにキャストしたいと思うが、conv()関数は本当に私が欠けていたものだった。 –
最終的なメモ。私はJavaでこの数値に長い時間アクセスしていました。 Javaの整数型は署名され、conv()の結果は常に正の値をとるため、場合によってはオーバーフローすることになります。これを署名付きロングとして使用する場合は、キャストが必要であり、 'signed'へのキャストはそのトリックを行います。 –