32

これは、UUID() によって生成された MySQL GUID/UUID をバイナリ (16) に変換するために思いついた最良の方法です。

UNHEX(REPLACE(UUID(),'-',''))

そして、それを BINARY(16) に格納します

私が知っておくべきこの方法でそれを行うことの意味はありますか?

4

2 に答える 2

8

多くの意味はありません。クエリが少し遅くなりますが、ほとんど気付かないでしょう。

UNIQUEIDENTIFIER16-byte binaryとにかく内部的に保存されます。

バイナリをクライアントにロードしてそこで解析する場合は、 に注意してください。bit order最初のNEWID().

OracleSYS_GUID()関数はこの問題が発生しやすく、文字列に変換すると、クライアントとサーバーで異なる結果が得られます。

于 2009-02-13T18:35:29.007 に答える
5

MySQL 8.0 以降では、UUID_TO_BINを使用できます。

UUID_TO_BIN(string_uuid)、 UUID_TO_BIN(string_uuid, swap_flag)

文字列 UUID をバイナリ UUID に変換し、結果を返します。(IS_UUID() 関数の説明には、許可されている文字列 UUID 形式がリストされています。) 返されるバイナリ UUID は VARBINARY(16) 値です。

CREATE TABLE t (id binary(16) PRIMARY KEY);
 
INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));
INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));
INSERT INTO t VALUES(UUID_TO_BIN(UUID(), true));

SELECT *, BIN_TO_UUID(id) FROM t;

DB-Fiddle.com デモ

于 2018-04-21T07:39:00.123 に答える