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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
