MySQL中的顺序字符串不区分大小写

时间:2014-06-19 06:57:00

标签: mysql sql sql-order-by case-insensitive

如果在MySQL RDBMS中区分大小写,我如何订购username列值?

表格结构和数据:

╔══════╦════════════╦════════╗
║  id  ║  username  ║  name  ║
╠══════╬════════════╬════════╣
║    1 ║   adam     ║  test  ║
║    2 ║   Ben      ║  test1 ║
║    3 ║   Aron     ║  test2 ║
║    4 ║   charles  ║  test3 ║
╚══════╩════════════╩════════╝

期望的结果:

╔══════╦════════════╗
║  id  ║  username  ║
╠══════╬════════════╣
║    1 ║   adam     ║ 
║    2 ║   Aron     ║  
║    3 ║   Ben      ║  
║    4 ║   charles  ║ 
╚══════╩════════════╝

2 个答案:

答案 0 :(得分:11)

您可以在username子句中将order by格式化为大写或小写,如下所示:

order by lower(username)

答案 1 :(得分:3)

有两种不区分大小写的解决方案。

  • 首先使用COLLATE选项:

     SELECT * FROM table_name ORDER BY username COLLATE `latin1_general_ci`;
    
  • 不区分大小写ORDER BY的MySQL查询是将LOWER()添加到您的字段名称中:

     SELECT * FROM table_name ORDER BY LOWER(username);