2014-10-16 4 views
0

Допустим, вы хотите обновить таблицу Person, которая выглядит следующим образом:MySQL чувствителен к регистру оператор обновления

Name | Address | Age

Вы пишете запрос:

UPDATE Person SET Name='Tom' WHERE Name='Thomas'.


Является ли предложение WHERE в этом запросе чувствительным к регистру? То есть, обновит ли строки именами thomas и THOMAS?

(я работаю с MySQL Ver 14.14 DISTRIB 5.1.73, если это поможет.)

+1

обычно нечувствительный к регистру, если ваша таблица не использует регистрозависимую сверку –

+2

Это зависит от параметров сортировки столбца и базы данных. Документация - это хорошее место, чтобы начать понимать эти вещи: http://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html. –

+0

Есть ли способ обойти это? Например, используя функции STRING? – ktm5124

ответ

4

От MySql Documentation:

символов по умолчанию и параметры сортировки являются latin1 и latin1_swedish_ci, так непарности Строковые сравнения - это случай по умолчанию нечувствителен.

Можно изменить это поведение по умолчанию при создании таблицы с другой сортировкой: MySql CREATE TABLE Syntax.

Вы также можете изменить параметры сортировки (так поведение регистронезависимого по умолчанию) в запросе:

WHERE col_name COLLATE latin1_general_cs LIKE 'a%' 
Смежные вопросы