有人能告诉我,如果MySQL SELECT查询是大小写敏感或大小写不敏感默认?如果不是,我要发送什么查询,这样我就可以做一些事情:
SELECT * FROM `table` WHERE `Value` = "iaresavage"
实际上,价值的真正价值是IAreSavage。
有人能告诉我,如果MySQL SELECT查询是大小写敏感或大小写不敏感默认?如果不是,我要发送什么查询,这样我就可以做一些事情:
SELECT * FROM `table` WHERE `Value` = "iaresavage"
实际上,价值的真正价值是IAreSavage。
当前回答
在我的情况下,二进制或整理或字符集工作与我的UTF8表。
我的表中有用户名,如henry, henry, susan, susan或susan,并通过比较名称的字节序列来查找各自的用户。
下面的函数创建字节序列:
function makeByteString($string){
$tmp = "";
for($i=0;$i<strlen($string);$i++){
$sign = substr($string,$i,1);
$tmp.=ord($sign);
}
return $tmp;
}
SQL查询找到正确的id:
$sql = "SELECT id, username FROM users WHERE `username` = ? ";
$stmt = $conn->prepare($sql);
$stmt->execute([$strUsername]); //e.g. susan, Susan or suSan
$rows = $stmt->rowCount();
if($stmt && $rows>0){
while ($row = $stmt->fetch()) {
if(makeByteString($strUsername) ==
makeByteString(trim($row["username"]))){
$id = $row['id'];
}
}
}
其他回答
默认是不区分大小写的,但是 下一个最重要的事情 您应该看看该表是如何创建的 首先,因为你可以指定大小写 创建表时的敏感性。
下面的脚本创建一个表。 注意在底部,它说COLLATE latin1_general_cs。 结尾的cs表示区分大小写。 如果你想要 表是不区分大小写的,你要么保留它 或者使用“COLLATE latin1_general_ci”。
CREATE Table PEOPLE (
USER_ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
FIRST_NAME VARCHAR(50) NOT NULL,
LAST_NAME VARCHAR(50) NOT NULL,
PRIMARY KEY (USER_ID)
)
ENGINE=MyISAM DEFAULT CHARACTER SET latin1
COLLATE latin1_general_cs AUTO_INCREMENT=0;
如果您的项目是这样的,您可以创建您的 自己的表,那么指定您的 在创建表时选择大小写。
你可以试试。 希望对大家有用。
SELECT * FROM `table` WHERE `Value` COLLATE latin1_general_cs = "IAreSavage"
SQL Select不区分大小写。
这个链接可以告诉你如何区分大小写:http://web.archive.org/web/20080811231016/http://sqlserver2000.databases.aspfaq.com:80/how-can-i-make-my-sql-queries-case-sensitive.html
试一试:
order by lower(column_name) asc;
使用二进制
这是一个简单的选择
SELECT * FROM myTable WHERE 'something' = 'something'
= 1
这是一个二进制选择
SELECT * FROM myTable WHERE BINARY 'something' = 'something'
or
SELECT * FROM myTable WHERE 'something' = BINARY '
= 0