SQL 中区分大小写的字符串比较(MariaDB,MySQL)

Case-sensitive string comparison in SQL (MariaDB, MySQL)

我在 Whosebug(多年前发布)上阅读了很多关于这个问题的问题和答案,但我发现 none 使用 10.3.22-MariaDB 服务器和 libmysql - 5.6.43 作为数据库客户端。

我正在尝试执行以下操作: SELECT * FROM table WHERE 'column' = 'data' LIMIT 1
但是,如果 column 的值为 DaTadata,则上面的命令将 select 该行,而我正在努力只选择后者。

2011 年类似问题的答案 (MySQL) 建议:

SELECT * FROM table WHERE BINARY 'column' = 'data'
SELECT * FROM table WHERE 'column' = BINARY 'data'
SELECT * FROM table WHERE 'column' LIKE BINARY 'data'
SELECT * FROM table WHERE 'column' LIKE 'data' COLLATE latin1_general_cs

None 上面的命令尊重字母的大小写。而且,最后一个连运行都没有,由于

  1. Unrecognized keyword. (near "COLLATE" at position 45)
  2. Unexpected token. (near "latin1_general_cs" at position 53)

2020年这个问题的解决方案是什么?我做错了什么或者我的服务器出了什么问题?
任何帮助将不胜感激!

这应该有效:

WHERE BINARY column = 'data'

但是,如果将 column 放在单引号中,它将不起作用。那将是一个字符串而不是列引用。

这在列

周围没有单引号的情况下有效
SELECT * FROM table1 WHERE `column` LIKE 'data' COLLATE latin1_general_ci;

正如你问的排序规则必须符合字符集,所以如果你有像我这样的 utf8mb5,你写:

SELECT * FROM table1 WHERE `column` LIKE _latin1 'data'   COLLATE latin1_general_ci;