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

Bagaimana Fungsi WEIGHT_STRING() Bekerja di MySQL

Di MySQL, WEIGHT_STRING() fungsi mengembalikan string bobot untuk string input. Nilai yang dikembalikan adalah string biner yang mewakili nilai perbandingan dan pengurutan string.

Jika string input adalah nilai non-biner, nilai kembalian berisi bobot susunan untuk string. Jika itu nilai biner, hasilnya sama dengan string input. Ini karena bobot untuk setiap byte dalam string biner adalah nilai byte.

Fungsi ini adalah fungsi debugging yang ditujukan untuk penggunaan internal. Ini dapat digunakan untuk menguji dan men-debug collation. Perhatikan bahwa perilakunya dapat berubah di antara versi MySQL.

Sintaks

Sintaksnya seperti ini:

WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [flags])

Dimana str adalah string masukan. AS opsional klausa memungkinkan Anda untuk melemparkan string input ke jenis dan panjang tertentu. flags opsional argumen saat ini tidak digunakan di MySQL (pada versi 8.0).

Contoh 1 – Penggunaan Dasar

Berikut adalah contoh dasar penggunaan menggunakan string input nonbiner:

SELECT HEX(WEIGHT_STRING('Cat'));

Hasil:

+---------------------------+| HEX(WEIGHT_STRING('Kucing')) |+---------------------------+| 1C7A1C471E95 |+---------------------------+

Perhatikan bahwa saya menggunakan HEX() fungsi untuk menampilkan WEIGHT_STRING() hasil. Ini karena WEIGHT_STRING() mengembalikan hasil biner. Kita dapat menggunakan HEX() untuk menampilkan hasilnya dalam bentuk yang dapat dicetak.

Jika saya tidak menggunakan HEX() dalam contoh ini saya mendapatkan ini:

SELECT WEIGHT_STRING('Kucing');

Hasil:

+----------------------+| WEIGHT_STRING('Kucing') |+----------------------+| zG? |+----------------------+

Untuk memperjelas, inilah string, representasi heksadesimal dari string itu, dan representasi heksadesimal dari string bobotnya:

SET @str ='Kucing';SELECT @str, HEX(@str), HEX(WEIGHT_STRING(@str));

Hasil:

+------+-----------+---------------------------+ | @str | HEX(@str) | HEX(WEIGHT_STRING(@str)) |+------+-----------+--------------------- -----+| Kucing | 436174 | 1C7A1C471E95 |+------+-----------+--------------------------+ 

Contoh 2 – Klausa AS

Berikut ini contoh menggunakan AS klausa untuk mentransmisikan string input ke jenis dan panjang tertentu.

SET @str ='Kucing';SELECT HEX(WEIGHT_STRING(@str AS CHAR(3))) 'Char 3', HEX(WEIGHT_STRING(@str AS CHAR(8))) 'Char 8', HEX( WEIGHT_STRING(@str AS BINARY(3))) 'Binary 3', HEX(WEIGHT_STRING(@str AS BINARY(8))) 'Binary 8';

Hasil:

+-------------+--------------+----------+----- -------------+| Char 3 | Char 8 | Biner 3 | Biner 8 |+-------------+--------------+----------+----- -------------+| 1C7A1C471E95 | 1C7A1C471E95 | 436174 | 4361740000000000 |+--------------+--------------+----------+------ ------------+

Contoh 3 – Pengumpulan

Dua contoh berikut menunjukkan bagaimana string dapat memiliki bobot string yang berbeda, tergantung pada susunan yang digunakan. Susunan yang digunakan dalam contoh pertama adalah tidak peka terhadap aksen dan tidak peka huruf besar/kecil. Susunan yang digunakan dalam contoh kedua peka terhadap aksen dan peka huruf besar/kecil.

SET @upper =_utf8mb4 'CAT' COLLATE utf8mb4_0900_ai_ci;SET @lower =lcase(@upper);SELECT @upper 'String', HEX(@upper) 'Hex', HEX(WEIGHT_STRING(@upper)) 'Berat String'UNION ALLSELECT @lower, HEX(@lower), HEX(WEIGHT_STRING(@lower));

Hasil:

+--------+--------+---------------+| String | Heksa | String Berat |+--------+--------+---------------+| kucing | 434154 | 1C7A1C471E95 || kucing | 636174 | 1C7A1C471E95 |+--------+--------+---------------+

Dan inilah contoh yang sama, kecuali dengan susunan yang peka terhadap aksen dan peka huruf besar/kecil.

SET @upper =_utf8mb4 'CAT' COLLATE utf8mb4_0900_as_cs;SET @lower =lcase(@upper);SELECT @upper 'String', HEX(@upper) 'Hex', HEX(WEIGHT_STRING(@upper)) 'Berat String'UNION ALLSELECT @lower, HEX(@lower), HEX(WEIGHT_STRING(@lower));

Hasil:

+--------+--------+---------------------------- ------------------+| String | Heksa | String Berat |+--------+--------+---------------------------- ------------------+| kucing | 434154 | 1C7A1C471E9500000020002000200000000800080008 || kucing | 636174 | 1C7A1C471E9500000020002000200000000200020002 |+--------+----+----------------------------- -----------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Bagaimana Anda INSERT INTO tabel dengan subquery SELECT mengembalikan beberapa baris?

  2. Basis data tidak diperbarui secara otomatis dengan MySQL dan Python

  3. Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/lib/mysql/mysql.sock' (2)

  4. Bagaimana saya bisa menyimpan dan mengambil gambar dari database MySQL menggunakan PHP?

  5. Kesalahan mysql 1452 - Tidak dapat menambah atau memperbarui baris anak:batasan kunci asing gagal