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
目前該參數未使用。
返回值
返回值取決於以下情況:
輸入 |
返回值 |
---|---|
非二進製字符串 |
包含字符串的排序規則權重 |
二進製字符串 |
與輸入相同 |
|
|
例子
非二進製字符串
請注意,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
子句可用於將輸入字符串轉換為 CHAR
或 BINARY
字符串,其中 N
字符為 CHAR
或 N
字節為 BINARY
。 CHAR
的填充使用空格,而 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 版本之間發生變化,恕不另行通知。
相關用法
- MySQL WEEK()用法及代碼示例
- MySQL WEEK方法用法及代碼示例
- MySQL WEEKDAY()用法及代碼示例
- MySQL WEEKOFYEAR()用法及代碼示例
- MySQL WEEKDAY方法用法及代碼示例
- MySQL WEEKOFYEAR方法用法及代碼示例
- MySQL WHERE用法及代碼示例
- MySQL ROUND()用法及代碼示例
- MySQL REPEAT()用法及代碼示例
- MySQL POWER()用法及代碼示例
- MySQL LEAD() and LAG()用法及代碼示例
- MySQL IS_IPV4()用法及代碼示例
- MySQL RADIANS方法用法及代碼示例
- MySQL VARIANCE方法用法及代碼示例
- MySQL TIME_FORMAT方法用法及代碼示例
- MySQL CURTIME()用法及代碼示例
- MySQL weekofyear()用法及代碼示例
- MySQL Convert()用法及代碼示例
- MySQL IS NOT用法及代碼示例
- MySQL FROM_BASE64()用法及代碼示例
- MySQL LEFT方法用法及代碼示例
- MySQL UCASE方法用法及代碼示例
- MySQL PI()用法及代碼示例
- MySQL CONCAT()用法及代碼示例
- MySQL UPPER方法用法及代碼示例
注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | WEIGHT_STRING method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。