2
我有一个自定义的MySQL排序规则,利用收缩排序(即多个字符的序列定义为具有单一的权重)。作为一个简单的例子,我有这样的事规则所定义的:使用排序与收缩时使用MySQL字符串前缀匹配
<collation name="utf8_my_custom_collation_ci" id="1200">
<rules>
<reset>c</reset>
<p>ch</p>
<reset>ch</reset>
<p>d</p>
</rules>
</collation>
这应该整理“CH”,就好像是“d”之前后“C”和一个完全独立的一封信,让CZ < CH < d。它确实如此,所以很好地工作。
现在,我的问题是:如何以通用方式执行子字符串比较,同时将“C”和“CH”视为单独的字符?例如,我想要
SELECT word WHERE word LIKE 'c%';
SELECT word WHERE word LIKE 'ch%';
返回的集合是完全不相交的。
我知道这可以通过添加“NOT LIKE”语句来完成,但不是没有将每个查询中基本上嵌入我的整个归类逻辑。如果我在排序规则中定义了10个或更多这样的收缩,我宁愿不必手动将它们全部包含在一系列条件中,而不是像LIKE那样。
如果有问题,我使用MySQL 5.6。