Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memasukkan dan memilih UUID sebagai biner (16)

Jadi, sebagai tanggapan atas komentar. Cara yang benar untuk menyimpan UUID 36-char sebagai biner(16) adalah dengan melakukan penyisipan dengan cara seperti:

INSERT INTO sometable (UUID) VALUES
       (UNHEX(REPLACE("3f06af63-a93c-11e4-9797-00505690773f", "-","")))

UNHEX karena UUID sudah merupakan nilai hexed. Kami memangkas (REPLACE ) tanda hubung dalam pernyataan untuk mengurangi panjang menjadi 32 karakter (16 byte kami direpresentasikan sebagai HEX ). Anda dapat melakukan ini kapan saja sebelum menyimpannya, tentu saja, sehingga tidak harus ditangani oleh database.

Anda dapat mengambil UUID seperti ini:

SELECT HEX(UUID) FROM sometable;

Untuk berjaga-jaga jika seseorang menemukan utas ini dan tidak yakin bagaimana cara kerjanya.

Dan ingat:Jika Anda memilih baris menggunakan UUID, gunakan UNHEX() dengan syarat :

SELECT * FROM sometable WHERE UUID = UNHEX('3f06af63a93c11e4979700505690773f');

atau notasi literal (seperti yang disebutkan oleh Alexis Wilke):

SELECT * FROM sometable WHERE UUID = 0x3f06af63a93c11e4979700505690773f;

Dan BUKAN HEX() pada kolom:

SELECT * FROM sometable WHERE HEX(UUID) = '3f06af63a93c11e4979700505690773f';

Solusi terakhir, saat berfungsi, mengharuskan MySQL HEX es semua UUID sebelum dapat menentukan baris mana yang cocok. Ini sangat tidak efisien.

Sunting:Jika Anda menggunakan MySQL 8, Anda harus melihat fungsi UUID seperti yang disebutkan dalam jawaban SlyDave. Jawaban ini masih benar, tetapi tidak mengoptimalkan indeks UUID yang dapat dilakukan secara asli menggunakan fungsi-fungsi tersebut. Jika Anda menggunakan

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GALAT 1215:Tidak dapat menambahkan batasan kunci asing saat menggunakan ON DELETE SET NULL

  2. Bagaimana cara mendapatkan nilai dari Kotak Prompt Javascript dan Melewatkannya ke variabel PHP untuk dapat disimpan dalam SQL?

  3. Menu multi level dengan PHP/MySQL

  4. Cara Mengatasi Akses Ditolak Untuk Pengguna 'root'@'localhost' (menggunakan Kata Sandi:Ya) Saat Menghubungkan Database MySQL

  5. Kesalahan sintaks sql menggunakan kueri basis data UPDATE