當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


MySQL WEIGHT_STRING方法用法及代碼示例


MySQL 的 WEIGHT_STRING(~) 方法返回一個二進製字符串,表示給定輸入的權重字符串。

注意

權重字符串表示字符串的比較和排序值。如果兩個字符串具有相同權重的字符串,則它們被視為相等,而如果 WEIGHT_STRING(str1) < WEIGHT_STRING(str2)str1 < str2 。 ( str1 排序在 str2 之前)。

參數

1. str | string

返回其權重字符串的字符串。

2. AS {CHAR | BINARY} (N) | optional

將輸入字符串轉換為給定類型和長度。

3. flags | flag | optional

目前該參數未使用。

返回值

返回值取決於以下情況:

輸入

返回值

非二進製字符串

包含字符串的排序規則權重

二進製字符串

與輸入相同

NULL

NULL

例子

非二進製字符串

請注意,WEIGHT_STRING(~) 包含字符串的排序規則權重:

SET @s = _utf8mb4 'abc' COLLATE utf8mb4_0900_ai_ci;
SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));



+------+---------+------------------------+
| @s   | HEX(@s) | HEX(WEIGHT_STRING(@s)) |
+------+---------+------------------------+
| abc  | 616263  | 1C471C601C7A           |
+------+---------+------------------------+

二進製字符串

請注意,對於二進製字符串,WEIGHT_STRING(~) 相當於輸入字符串:

SET @s = CAST('abc' AS BINARY);
SELECT @s, HEX(@s), HEX(WEIGHT_STRING(@s));



+------------+---------+------------------------+
| @s         | HEX(@s) | HEX(WEIGHT_STRING(@s)) |
+------------+---------+------------------------+
| 0x616263   | 616263  | 616263                 |
+------------+---------+------------------------+

NULL

NULL 的權重字符串為 NULL

SELECT WEIGHT_STRING(NULL);



+------------------------------------------+
| WEIGHT_STRING(NULL)                      |
+------------------------------------------+
| NULL                                     |
+------------------------------------------+

AS條款

可選的 AS 子句可用於將輸入字符串轉換為 CHARBINARY 字符串,其中 N 字符為 CHARN 字節為 BINARYCHAR 的填充使用空格,而 BINARY 的填充使用 0x00 字節。

SET NAMES 'latin1';
SELECT HEX(WEIGHT_STRING('abc')), HEX(WEIGHT_STRING('abc' AS CHAR(5)));



+---------------------------+--------------------------------------+
| HEX(WEIGHT_STRING('abc')) | HEX(WEIGHT_STRING('abc' AS CHAR(5))) |
+---------------------------+--------------------------------------+
| 414243                    | 4142432020                           |
+---------------------------+--------------------------------------+

空間的 latin1 值為 32 ,以十六進製表示為 20

當我們將 'abc' 轉換為 CHAR(5) 時,會在返回的二進製字符串的右側填充兩個空格字符。

當我們轉換為二進製時,我們在結果中看到兩對 00 right-padded 而不是空格:

SELECT HEX(WEIGHT_STRING('abc')), HEX(WEIGHT_STRING('abc' AS BINARY(5)));



+---------------------------+----------------------------------------+
| HEX(WEIGHT_STRING('abc')) | HEX(WEIGHT_STRING('abc' AS BINARY(5))) |
+---------------------------+----------------------------------------+
| 414243                    | 6162630000                             |
+---------------------------+----------------------------------------+
警告

MySQL 文檔指出 WEIGHT_STRING(~) 是一種調試方法,僅供內部使用,因為其行為可能會在 MySQL 版本之間發生變化,恕不另行通知。

相關用法


注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | WEIGHT_STRING method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。