在mySQL中我必须使用WHERE BINARY UPPER(col1) = col1
,但在Oracle中它没有问题。有人能解释一下为什么会这样吗?我是mySQL的新手。
所以用以下陈述来看待它
select upper(col1),col1
from mytable
where upper(col1) = col1;
Oracle中的结果:
UPPER(COL1) COL1
-------------------- --------------------
JÜRGEN JÜRGEN
RENÉ RENÉ
CARL CARL
MySQL中的结果
UPPER(COL1) COL1
-------------------- --------------------
JÜRGEN JÜRGEN
JÜRGEN Jürgen
RENÉ René
RENÉ RENÉ
CARL Carl
CARL CARL
答案 0 :(得分:4)
默认情况下,字符串比较在MySQL和SQLServer中都不区分大小写。
How can I make SQL case sensitive string comparison on MySQL?
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
Why is SQL Server '=' comparator case insensitive?
http://msdn.microsoft.com/en-us/library/aa174903%28SQL.80%29.aspx
答案 1 :(得分:3)
您的MySQL排序规则不区分大小写......所以'CARL' = 'Carl'
为真。
答案 2 :(得分:1)
在您的WHERE和UPPER之间放置单词BINARY。这将迫使进行区分大小写的比较