#php #mysql #sql
#php #mysql #sql
Вопрос:
у меня есть таблица с некоторыми полями электронной почты. Некоторые записи электронной почты написаны заглавными буквами, а некоторые — регистром верблюда . Теперь мне нужно преобразовать все электронные письма с заглавными буквами в маленькие буквы. Я могу сделать это с помощью PHP-скрипта, извлекая каждую запись, затем проверяя ее на наличие любых заглавных букв, а затем преобразуя ее в нижний регистр, если найдена какая-либо заглавная буква.
Есть ли в Mysql какой-либо способ, с помощью которого мы можем получить только те записи, которые содержат в них заглавные буквы, а не все?? Таким образом, я буду избавлен от выполнения каждой записи. Я ищу способ в Mysql, с помощью которого мы можем проверять наличие заглавных букв в записи в самом запросе. Есть предложения??
Комментарии:
1. Что вы подразумеваете под «записями электронной почты»? Если вы говорите о ADDR_SPECs, то вам может потребоваться учесть, что, хотя домены не чувствительны к регистру, имена почтовых ящиков иногда чувствительны.
Ответ №1:
Измените параметры сортировки на параметры сортировки с учетом регистра.
Но на самом деле, сколько времени займет этот запрос?
update `table` set email = lower(email)
Редактировать: обновлять только записи, содержащие не только строчные электронные письма:
update
`table`
set
email = lower(email)
where
email <> lower(email)
collate
latin1_general_cs
Вы можете проверить это, выбрав их первыми:
select
*
from
`table`
where
email <> lower(email)
collate
latin1_general_cs
limit
10
Комментарии:
1. я не хочу трогать те идентификаторы электронной почты, в которых нет заглавной буквы, поскольку в этой таблице есть огромные данные, и обход всех здесь не является хорошим решением
2. до сих пор мне не хватало «сопоставить latin1_general_cs» …. что это делает конкретно в этом query…it было бы здорово, если бы вы могли объяснить и это тоже 🙂
3. Сопоставление в СУБД определяет, как обрабатываются запросы к заданному набору данных. CI означает нечувствительный к регистру, поэтому «foo» соответствует «foo», «FOO», «Foo» и так далее. CS чувствителен к регистру, поэтому должно быть точное совпадение. Параметры сортировки по умолчанию, используемые в большинстве систем баз данных, не чувствительны к регистру. Смотрите также здесь .
4. @developer — Если это одноразовое упражнение — в чем вред? Просто приходите как-то очень рано утром.