字符串列in.Information_Schema.
表有一个融合UTF8_GENERAL_CI.
,不区分大小写。但是,对于与文件系统中表示的对象(如数据库和表)对应的值,则在Information_Schema.
字符串列可以区分大小写或不区分大小写,这取决于底层文件系统的特征和dreame_case_table_names.
系统变量设置。例如,如果文件系统是区分大小写的,搜索可能是区分大小写的。本节将描述这种行为以及在必要时如何修改它。
假设查询搜索图式。SCHEMA_NAME
列的测试
数据库。在Linux上,文件系统区分大小写,所以比较图式。SCHEMA_NAME
与“测试”
匹配,但比较'测试'
不要:
mysql>从Information_schema.schemata中选择schema_name,其中schema_name ='test';+ ------------- + |schema_name |+ ------------- + |测试|+ ------------- + MySQL>从Information_schema.schemata中选择schema_name,其中schema_name ='test';空集(0.00秒)
这些结果发生在dreame_case_table_names.
系统变量设置为0. adreame_case_table_names.
设置为1或2导致第二个查询返回与第一个查询相同的(非空)结果。
禁止使用a启动服务器dreame_case_table_names.
与服务器初始化时使用的设置不同的设置。
在Windows或macOS上,文件系统不是区分大小写的,所以两者比较都匹配“测试”
和'测试'
:
mysql>从Information_schema.schemata中选择schema_name,其中schema_name ='test';+ ------------- + |schema_name |+ ------------- + |测试|+ ------------- + MySQL>从Information_schema.schemata中选择schema_name,其中schema_name ='test';+ ------------- + |schema_name |+ ------------- + |测试| +-------------+
的价值dreame_case_table_names.
在这种情况下没有区别。
发生上述行为是因为UTF8_GENERAL_CI.
不使用Information_Schema.
搜索对应于文件系统中表示的对象的值时查询。
如果字符串操作的结果Information_Schema.
列不同于预期,一种变通方法是使用显式整理
子句强制执行适当的排序(参见第10.8.1节“在SQL陈述中使用Constate”)。例如,要执行不敏感的搜索,请使用整理
与之Information_Schema.
列名称:
MySQL>从Information_schema.schemata中选择架构架构_schemata,其中schema_name collate utf8_general_ci ='test';+ ------------- + |schema_name |+ ------------- + |测试|+ ------------- + MySQL>从Information_schema.schemata中选择schema_name,其中schema_name collate utf8_general_ci ='test';+ ------------- + |schema_name |+ ------------- + |测试| +-------------+
WHERE UPPER(SCHEMA_NAME) = 'TEST'
尽管即使在具有区分大小写的文件系统的平台上也可以执行不区分大小写的比较,如刚才所示,但这并不一定总是正确的做法。在这样的平台上,可以有多个对象,它们的名称只在字母大小写上不同。例如,表名城市
,城市
, 和城市
可以同时存在。考虑一个搜索是应该匹配所有这些名称还是只匹配一个并相应地编写查询。下面的第一个比较(与utf8_bin
)是区分大小写;其他的则不是:
table_name collate utf8_bin ='city',其中table_name collatate utf8_general_ci ='city',其中upper(table_name)='city',其中dower(table_name)='city'
搜索在Information_Schema.
用于参考值的字符串列Information_Schema.
它本身使用UTF8_GENERAL_CI.
整理,因为Information_Schema.
是一个”虚拟”未在文件系统中表示的数据库。例如,比较图式。SCHEMA_NAME
比赛'Information_schema'
或者“INFORMATION_SCHEMA”
不管平台:
mysql> SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA。SCHEMATA WHERE SCHEMA_NAME = '信息模式';+--------------------+ | SCHEMA_NAME | +--------------------+ | information_schema | +--------------------+ mysql >从INFORMATION_SCHEMA选择SCHEMA_NAME。Schemata where schema_name = ' information_schema ';+--------------------+ | SCHEMA_NAME | +--------------------+ | information_schema | +--------------------+