如何更新列 - 不区分大小写??
如果我运行下面的查询,它会按预期返回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%'
有关我需要做些什么的建议,以便正确运行?
答案 0 :(得分:4)
对查询使用UPPER()
或LOWER()
函数。
答案 1 :(得分:2)
只是一个FYI:LOWER和UPPER不适用于BINARY,VARBINARY和BLOB。如果您的字段属于这些类型之一,则需要使用CONVERT将字符串转换为非二进制字符串:
LOWER(CONVERT(@str USING latin1))