MySQL 查询 - 使用 ORDER BY rand( ) 强制区分大小写

标签 mysql case-sensitive

是否可以强制查询区分大小写?

我的声音是这样的:

"SELECT g_path FROM glyphs WHERE g_glyph = :g_glyph ORDER BY rand()"

如果 g_glyph = r,结果可以是 R 或 r,这不是我所期望的。 我正在寻找区分大小写的返回。

我用谷歌搜索了我的问题并找到了这个解决方案:

/*Case-sensitive sort in descending order.
In this query, ProductName is sorted in 
case-sensitive descending order.
*/
SELECT ProductID, ProductName, UnitsInStock
FROM products
ORDER BY BINARY ProductName DESC;

但是下面一行根本不起作用:

"SELECT g_path FROM glyphs WHERE g_glyph = :g_glyph ORDER BY BINARY rand()"

有什么建议吗?

非常感谢您的帮助。

最佳答案

字符的顺序和相等性由 collation 定义.在大多数情况下,使用不区分大小写的排序规则。

如果您需要对特定数据进行严格区分大小写的比较,请使用 BINARY operator :

mysql> SELECT 'a' = 'A';
        -> 1
mysql> SELECT BINARY 'a' = 'A';
        -> 0
mysql> SELECT 'a' = 'a ';
        -> 1
mysql> SELECT BINARY 'a' = 'a ';
        -> 0

所以在你的情况下:

SELECT g_path FROM glyphs WHERE BINARY g_glyph = :g_glyph ORDER BY rand()

关于MySQL 查询 - 使用 ORDER BY rand( ) 强制区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160556/

相关文章:

mysql - Phpstorm数据库: java. sql.SQLException:通信链路故障

java - 正则表达式或 Java 将某些区域转换为较低的字符串

oracle - 在哪里可以查询oracle数据库的大小写敏感度?

php - Doctrine 1.1 中大写列名的奇怪行为导致异常

php - 无法将数据保存到 mysql(按保存按钮后页面变为空白)

php - 原始查询适用于 phpmyadmin 但不适用于 laravel

Mysql从select语句插入只插入零

mysql - 如何在 Windows 中的(现有)mySQL 名称中使用大写字母

Javascript 正则表达式不敏感的土耳其字符问题

mysql - 将忽略插入到 Rails 事件记录中的表语句中