之前已經詢問過這個網站,但是我找不到足夠的答案。如果我做這樣的查詢:MySQL區分大小寫的查詢
Select Seller from Table where Location = 'San Jose'
我怎樣才能使它返回與位置「聖何塞」只有賣方而不是「聖何塞」或者別的什麼?
之前已經詢問過這個網站,但是我找不到足夠的答案。如果我做這樣的查詢:MySQL區分大小寫的查詢
Select Seller from Table where Location = 'San Jose'
我怎樣才能使它返回與位置「聖何塞」只有賣方而不是「聖何塞」或者別的什麼?
默認情況下,MySQL查詢不區分大小寫。以下是一個查找「值」的簡單查詢。然而,它會返回「VALUE」,「價值」,「價值」,等等......
SELECT * FROM `table` WHERE `column` = 'value'
好消息是,如果你需要做一個區分大小寫的查詢,這是非常容易使用BINARY
做運營商,它通過字節比較迫使一個字節:
SELECT * FROM `table` WHERE BINARY `column` = 'value'
爲了改善詹姆斯的出色答卷:
這是更好地把BINARY
在不斷的前面,而不是:
SELECT * FROM `table` WHERE `column` = BINARY 'value'
將BINARY
放在column
之前將防止在該列上使用任何索引。
如何將它添加到「LIKE」? –
@Purushotamrawat只是替換= LIKE ... SELECT * FROM'table' WHERE'column' LIKE BINARY'%value%' – NVG
雖然列出的答案是正確的,我可能會建議,如果您的專欄要保存區分大小寫的字符串,請閱讀the documentation並相應地更改您的表定義。
在我而言這等於定義我的列:
`tag` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT ''
這是在我看來,優惠到調整查詢。
我編輯修復了我很確定的一個愚蠢的錯字,恰恰相反你想說什麼。不過,我覺得我應該通知你(因爲這是一個雙字符變化,站點不會自動通知你)。假設你對這個改變感到滿意,隨時可以將我的評論標記爲過時,並讓它變成粉碎。 (如果我搞砸了,吼我。) –
這應該是被接受的答案。 – mathheadinclouds
使用[COLLATE](http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html) –
可能重複[如何在MySQL上對SQL區分大小寫的字符串進行比較?] (http://stackoverflow.com/questions/5629111/how-can-i-make-sql-case-sensitive-string-comparison-on-mysql) – ks1322
最佳答案比COLLATE,imo更好,因爲它更簡單。 –