Mysql:为视图设置排序规则不起作用
Mysql: Set collation for view not working
我想将视图的排序规则设置为默认数据库。但是该选项不可用。
即使我尝试设置除此之外的任何设置,列中也不会反映相同的内容,因为它们各自具有不同的排序规则。
代码:
create or replace view my_view as
select * from table_a a
inner join table_b b
on a.id = b.fk_id
collate utf8mb4_unicode_ci
但是如果我查询
SHOW FULL COLUMNS FROM my_view
结果集包含排序规则 utf8mb4_general_ci
谁能解释为什么会这样?我该如何更正它?
更多信息
SHOW VARIABLES LIKE "char%";
variable_name
value
character_set_client
utf8
character_set_connection
utf8
character_set_database
utf8mb4
character_set_filesystem
binary
character_set_results
utf8
character_set_server
latin1
character_set_system
utf8
character_sets_dir
/usr/local/mysql/share/charsets/
您的collate utf8mb4_unicode_ci
仅影响加入条件。
如果您需要更改结果集排序规则,则必须使用单独的列列表而不是带有单独排序规则更改的星号(CONVERT
函数)或为每个字符串类型的列指定。
我想将视图的排序规则设置为默认数据库。但是该选项不可用。 即使我尝试设置除此之外的任何设置,列中也不会反映相同的内容,因为它们各自具有不同的排序规则。
代码:
create or replace view my_view as
select * from table_a a
inner join table_b b
on a.id = b.fk_id
collate utf8mb4_unicode_ci
但是如果我查询
SHOW FULL COLUMNS FROM my_view
结果集包含排序规则 utf8mb4_general_ci
谁能解释为什么会这样?我该如何更正它?
更多信息
SHOW VARIABLES LIKE "char%";
variable_name | value |
---|---|
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8mb4 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | latin1 |
character_set_system | utf8 |
character_sets_dir | /usr/local/mysql/share/charsets/ |
您的collate utf8mb4_unicode_ci
仅影响加入条件。
如果您需要更改结果集排序规则,则必须使用单独的列列表而不是带有单独排序规则更改的星号(CONVERT
函数)或为每个字符串类型的列指定。