WEIGHT_STRING
语法声明
WEIGHT_STRING(str [AS {CHAR|BINARY}(N)] [LEVEL levels] [flags])
levels:
N [ASC|DESC|REVERSE] [, N [ASC|DESC|REVERSE]] ...
说明
WEIGHT_STRING() 函数返回输入字符串的权重,返回值是一个二进制字符串,表示字符串的比较和排序值。比较规则如下:
-
如果
WEIGHT_STRING(str1) = WEIGHT_STRING(str2),则str1 = str2(即str1和str2相等)。 -
如果
WEIGHT_STRING(str1) < WEIGHT_STRING(str2),则str1 < str2(即str1排在str2之前)。
WEIGHT_STRING() 函数仅供内部调试使用,可用于测试和调试排序规则,尤其是在添加新排序规则的场景。
语法说明
WEIGHT_STRING() 函数的语法解释如下:
| 关键字 | 说明 |
|---|---|
| str | 输入的字符串表达式。
NULL 返回值,如果其长度在 VARBINARY 的最大长度范围内,则该值的数据类型为 VARBINARY,否则数据类型为 BLOB。 |
| AS | 该子句将输入字符串转换为指定的类型和长度,为可选项。 |
| LEVEL | 该子句指定返回值的权重级别,为可选项。 |
| flags | 此参数暂未使用,为可选项。 |
AS 子句使用说明
AS 子句可以将输入字符串强制转换为非二进制或二进制字符串,并将其强制设置为指定长度,使用说明如下:
-
AS CHAR(N)将字符串转换为非二进制字符串,并在右侧用空格填充到N(N>=1) 个字符的长度。如果N小于输入字符串的长度,则字符串将被截断为N个字符,而且截断时不会发出告警。 -
AS BINARY(N)将字符串转换为二进制字符串,N以字节(不是字符)为单位,填充使用0x00字节(不是空格)。
示例如下:
SELECT HEX(WEIGHT_STRING('ab' AS CHAR(4)));
+-------------------------------------+
| HEX(WEIGHT_STRING('ab' AS CHAR(4))) |
+-------------------------------------+
| 41422020 |
+-------------------------------------+
1 row in set (0.001 sec)
SELECT HEX(WEIGHT_STRING('ab' AS BINARY(4)));
+---------------------------------------+
| HEX(WEIGHT_STRING('ab' AS BINARY(4))) |
+---------------------------------------+
| 61620000 |
+---------------------------------------+
1 row in set (0.001 sec)