SQL查询结果区分大小写

如何在MS SQL 2005和MySQL数据库中查询结果区分大小写。

工具/原料

  • MS SQL2005,MySql

方法/步骤

  1. 数据库中使用到的通配符及含义:

    “.”:匹配任意单个字符。

    “?”:匹配前面的子表达式0次或1次。

    “+”:匹配前面的子表达式1次或多次。

    “*”:匹配前面的子表达式0次或多次。x*,表示0个或多个x字符;[0-9]*,匹配任何数量的数字。

    “^”:表示匹配开始位置。

    “$”:表示匹配结束位置。

    “[]”:表示一个集合。[hi],表示匹配h或i;[a-d],表示匹配a、b、c、d中任一个。“{}”:表示重复的次数。1{3},表示匹配3个1,即111;[0-9]{1,10},表示匹配1到10个数字。

  2. 例如:

    查询user库中name只以“A%B”三个字符开头的记录。

    ------------------------

    在数据库中“%”是通配符不能直接使用。

  3. 在MySQL中的方法:

    1)使用转义字符\:

    select * fromuser where name like "A\%B%";

    2)$被转义:

    select * fromuser where name like "A$%B%" escape "$";

  4. 在MS SQL2005中的方法:

    1)select * fromuser where name like "A[%]B%";

    2)select * from user where name like "A$%B%" escape "$";

  5. 查询结果并不是只查到了“A%B”开头的记录,例如“a%B”,小写的a或b也会被查出来。

    -----------------

    这是为什么呢?

    原来,在数据库查询中,默认是不区分大小写的

    -----------------

    那如何让查询结果区分大小写呢?

  6. 在MySQL中的方法:

    1)select * from user where name like "A\%B%" collate utf8_bin;

    或者

    select * from user where name collate utf8_bin like "A\%B%" ;

    collate utf8_bin放在like前后都可以。

    2)select * from user where name collate utf8_bin like "A$%B%" escape "$";

    -----------------------------

    注:方法2中的collate utf8_bin不能放在escape "$"的后边。

    utf8_bin表示建表时使用的字符集。

  7. 在MS SQL2005中的方法:

    1)select * from user where name collate Chinese_PRC_CS_AS like 'A$%B%' escape '$';

    或者

    select * from user where name like 'A$%B%' escape '$' collate Chinese_PRC_CS_AS;

    collate Chinese_PRC_CS_AS放在like前后都可以。

    2)select * from user where name collate Chinese_PRC_CS_AS like 'A[%]B%';

    或者

    select * from user where name like 'A[%]B%' collate Chinese_PRC_CS_AS;

  8. Chinese_PRC_CS_AS是MS SQL2005中的排序规则。

    在MS SQL2005中我们可以这样来查询排序规则:

    select * from ::fn_helpcollations();

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

更多相关文章

  1. MySQL数据库表名、列名、别名区分大小写的问题
  2. Python中字符大小写的问题
  3. linux下mysql表名大小写敏感问题
  4. 既然sql对大小写不敏感,为什么几乎所有材料都用大写?
  5. mysql表名忽略大小写
  6. java漏洞成黑客目标微软呼吁用户更新软件
  7. Java区分大小写字母数字和符号
  8. java 中判断一个字符串中大小写字母的个数及其思路

随机推荐

  1. synchronized 锁的升级原理是什么?
  2. 博客网站显示框相对浏览器固定位置显示
  3. 如何创建、启动 Java 线程?
  4. 什么是死锁?
  5. 如何停止一个线程池?
  6. 什么是活锁和饥饿?及示例
  7. Java自学指南五、编码工具
  8. 如何避免死锁
  9. 一文看懂 Node.js 中的多线程和多进程[每
  10. QUAMAR T60 碎冰机