当前位置: 首页 > 图文教程 > 数据库 > MYSQL > 解析:校对确定 较为复杂的一些特殊情况

MYSQL
五种MySQL数据库可靠性方案的分析和比较
怎样在Mysql中直接储存图片
mysql的本地备份和双机相互备份脚本
详细讲解Linux环境下MySQL 5.1安装步骤
实例讲解在MySQL中如何导出整个数据库
讲解MySQL索引的概念及数据库索引的应用
教你在MySQL中快速复制表格作为测试数据
删除完全重复和部分关键字段重复的记录
MySQL各存储引擎的区别及其启动方法
MySQL在网络安全方面采取的主要措施
在MySQL中执行SQL语句时的几个注意点
MySQL改善数据装载操作效率的策略
设计高效合理的MySQL查询语句讲解
MySQL用户Root密码为弱口令的攻击
MySQL数据库接口的VC具体实现与应用
在MySQL数据库增加新用户权限简介
MySQL中文模糊检索问题的解决方法
MySQL的数据类型和建库策略详解
利用图形界面从SQL导入导出到MySQL
MySQL数据库应该如何对抗解密高手

MYSQL 中的 解析:校对确定 较为复杂的一些特殊情况


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 102 ::
收藏到网摘: n/a

在绝大多数查询中,MySQL使用哪种校对规则进行比较是很显然的。例如,在下列情况中,校对规则明显的是“列x的列校对规则”:


但是,当涉及多个操作数时,可能不明确。例如:

SELECT x FROM T WHERE x = 'Y';
 
这个查询应该使用列x的 校对规则,还是字符串文字'Y'的 校对规则?

标准化SQL使用“可压缩性”规则解决这种问题。基本上,这个意思是:既然x和'Y'都有 校对规则,哪个校对规则优先?这可能比较难解决,但是以下规则适合大多数情况:

·一个外在的COLLATE子句可压缩性是0(根本不能压缩。)

·使用不同校对规则的两个字符串连接的可压缩性是1。

·列校对规则的可压缩性是2。

·“系统常数”(如USER()或VERSION()函数返回的字符串)可压缩性是3。

·文字规则的可压缩性是4。

·NULL或从NULL派生的表达式的可压缩性是 5。

上述可压缩性值是MySQL5.1当前所用的。

这样上述规则可以模糊解决:

·使用最低的可压缩性值的校对规则。

·如果两侧有相同的可压缩性,那么如果校对规则不同则发生错误。

例如:

column1 = 'A'

使用column1的校对规则
 
column1 = 'A' COLLATE x

使用'A'的校对规则
 
column1 COLLATE x = 'A' COLLATE y

错误
 
使用COERCIBILITY()函数确定一个字符串表达式的可压缩性:

以下为引用的内容:

mysql> SELECT COERCIBILITY('A' COLLATE latin1_swedish_ci);
        -> 0
mysql> SELECT COERCIBILITY(VERSION());
        -> 3
mysql> SELECT COERCIBILITY('A');
        -> 4


没有系统常数或可忽略的压缩性。函数如USER()的可压缩性是2而不是3,文字的可压缩性是3而不是4。