想要查询同时包含且只包含大写字母和小写字母的字段,使用语句:
SELECT * FROM Table
WHERE rtrim(col) not like '%[^a-zA-Z]%'
and rtrim(col) like '%[a-z]%'
and rtrim(col) like '%[A-Z]%'
COLLATE Chinese_PRC_BIN
结果中却仍然含有纯大写的字段。Mark-down第三排,发现结果没有变化,似乎限制失效了。
尝试:
SELECT * FROM Table
WHERE rtrim(col) COLLATE Chinese_PRC_BIN not like '%[^a-zA-Z]%'
and rtrim(col) COLLATE Chinese_PRC_BIN like '%[a-z]%'
and rtrim(col) COLLATE Chinese_PRC_BIN like '%[A-Z]%'
发现这次成功了:
推测也许COLLATE Chinese_PRC_BIN 在语句中只能管一行,第一次查询中只有第三个条件是区分了大小写的,其他条件没有区分大小写。
把 COLLATE Chinese_PRC_BIN加到每一个限制条件上就好了。
(COLLATE Chinese_PRC_CS_AS同理)。