10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

12.8.3字符集和函数结果排序

MySQL有许多返回字符串的操作符和函数。本节回答这个问题:这样的字符串的字符集和排序规则是什么?

对于接受字符串输入并返回字符串结果作为输出的简单函数,输出的字符集和排序规则与主输入值的字符集和排序规则相同。例如,上(X返回一个字符串,其字符串和排序规则与X.同样适用于INSTR ()LCASE ()低()LTRIM ()中期()重复()替换()反向()正确的()RPAD ()空白()探测法()SUBSTRING ()削减()UCASE (),上()

请注意

替换()Function与所有其他函数不同,它总是忽略字符串输入的排序规则,并执行区分大小写的比较。

如果字符串输入或函数结果是二进制字符串,则该字符串具有二进制字符集和排序规则。可以使用字符集()而且排序()函数,两者都返回二进制对于二进制字符串参数:

SELECT CHARSET(二进制'a'), COLLATION(二进制'a');+---------------------+-----------------------+ | 字符集(二进制a) |排序(二进制的 ') | +---------------------+-----------------------+ | 二进制|二进制  | +---------------------+-----------------------+

对于组合多个字符串输入并返回单个字符串输出的操作,则使用聚合规则的标准SQL语句应用于确定结果的整理:

  • 如果一个显式的核对Y时,使用Y

  • 如果显式核对Y而且核对Z发生时,引发错误。

  • 否则,如果所有排序规则都是Y,使用Y

  • 否则,结果就没有排序规则。

例如,使用情况……WHEN a THEN b WHEN b THEN c核对X结束,得到的排序规则为X.同样适用于联盟||CONCAT ()英语教学()最大的()如果(),至少()

对于转换为字符数据的操作,由操作产生的字符串的字符集和排序规则由character_set_connection而且collation_connection决定默认连接字符集和排序规则的系统变量(请参见第10.4节,“连接字符集和排序规则”).这只适用于BIN_TO_UUID ()把()CONV ()FORMAT ()十六进制(),空间()

对于虚拟生成的列的表达式,会出现上述原则的例外。在这样的表达式中,表字符集用于BIN_TO_UUID ()CONV (),或十六进制()结果,无论连接字符集。

如果对字符串函数返回的结果的字符集或排序规则有任何问题,请使用字符集()排序()函数找出:

SELECT USER(), CHARSET(), COLLATION(), USER();+----------------+-----------------+-------------------+ | 用户()|字符集(用户())|排序(用户 ()) | +----------------+-----------------+-------------------+ | test@localhost | utf8 | utf8_general_ci  | +----------------+-----------------+-------------------+ mysql >选择字符集(压缩(abc)),排序(压缩(' abc '));+--------------------------+----------------------------+ | 字符集(压缩(abc)) |排序(压缩(abc ')) | +--------------------------+----------------------------+ | 二进制|二进制  | +--------------------------+----------------------------+