mysql - 如何更新和替换忽略大小写

时间:2012-09-03 12:37:32

标签: mysql sql

如何更新列 - 不区分大小写??

如果我运行下面的查询,它会按预期返回62条记录:

select entity_id 
from field_data_body 
where body_value like '%mailto:iss.servicedesk@example.com%';
  

返回62条记录

我正在尝试更新这些记录,以便使用以下查询将iss.servicedesk@example.com替换为http://iss.servicedesk.example.com

update field_data_body
SET body_value = REPLACE(body_value,'%mailto:iss.servicedesk@example.com%',
                        'http://iss.servicedesk.example.com');

不幸的是,它仅更新52条记录,因为它运行区分大小写的查询,例如上述查询无法识别Iss.Servicedesk@example.com

如何运行上面的更新查询,但是让它不区分大小写,以便选择我想要更新的所有表?

我已经更新了下面的查询 - 它的运行,但是当我知道有需要更新的链接时,找不到任何要更新的结果:

update `field_data_body` SET `body_value` = REPLACE(body_value,'%mailto:iss.servicedesk@example.com%','https://iss.servicedesk.example.com')
where LOWER(CONVERT( body_value USING latin1)) like '%mailto:iss.servicedesk@example.com%'

有关我需要做些什么的建议,以便正确运行?

2 个答案:

答案 0 :(得分:4)

对查询使用UPPER()LOWER()函数。

答案 1 :(得分:2)

只是一个FYI:LOWER和UPPER不适用于BINARY,VARBINARY和BLOB。如果您的字段属于这些类型之一,则需要使用CONVERT将字符串转换为非二进制字符串:

 LOWER(CONVERT(@str USING latin1))