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
的值为 DaTa
或 data
,则上面的命令将 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 上面的命令尊重字母的大小写。而且,最后一个连运行都没有,由于
- Unrecognized keyword. (near "COLLATE" at position 45)
- 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;
我在 Whosebug(多年前发布)上阅读了很多关于这个问题的问题和答案,但我发现 none 使用 10.3.22-MariaDB 服务器和 libmysql - 5.6.43 作为数据库客户端。
我正在尝试执行以下操作:
SELECT * FROM table WHERE 'column' = 'data' LIMIT 1
但是,如果 column
的值为 DaTa
或 data
,则上面的命令将 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 上面的命令尊重字母的大小写。而且,最后一个连运行都没有,由于
- Unrecognized keyword. (near "COLLATE" at position 45)
- 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;