当前位置:首页 > 网络编程 > 数据库 > Mysql > 校对确定 较为复杂的一些特殊情况

校对确定 较为复杂的一些特殊情况

点击次数:31 次 发布日期:2008-11-22 09:01:30 作者:源代码网
源代码网推荐

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

源代码网整理以下SELECT x FROM T ORDER BY x;
SELECT x FROM T WHERE x = x;
SELECT DISTINCT x FROM T;

源代码网整理以下但是,当涉及多个操作数时,可能不明确。例如:

源代码网整理以下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。

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华