2011-10-12 28 views
1

我有一个包含一些电子邮件字段的表。有些电子邮件记录用大写字母表示,有些用骆驼表示。现在我必须将所有电子邮件都用大写字母转换成小写字母。我可以通过获取每条记录然后检查任何大写字母,然后在发现大写字母时将其转换为小写来使用PHP脚本来完成此操作。在mysql查询中检查大写字母

有什么办法可以在Mysql与我们只能得到那些包含大写字母的记录,而不是所有?这样我就可以通过执行每一条记录而省掉。 Iam在Mysql中寻找一种方式,我们可以在查询本身中检查记录中的大写字母。有什么建议么??

+1

你是什么意思的“电子邮件记录” ?如果您正在讨论ADDR_SPEC,那么您可能需要考虑的是,虽然域不区分大小写,但邮箱名称*有时是*。 – symcbean

回答

5

将排序规则更改为区分大小写排序规则。

但是真的,这个查询需要多长时间?

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 
+0

我不想触摸那些没有任何大写字母的电子邮件ID,因为此表中有大量数据,遍历所有不是一个好的解决方案 – developer

+0

回答更新。 – CodeCaster

+0

我到现在为止所缺少的是“collat​​e latin1_general_cs”....这个查询中具体做了什么......如果你能解释这个,这将会很棒:) – developer