3

列を更新する方法 - 大文字と小文字を区別しない??

以下のクエリを実行すると、予想どおり 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%'

正しく動作するように修正するために何をする必要があるかについて何かアドバイスはありますか?

4

2 に答える 2

4

クエリで使用UPPER()またはLOWER()機能します。

于 2012-09-03T12:39:30.887 に答える
2

参考までに:LOWERとUPPERは、BINARY、VARBINARY、およびBLOBでは機能しません。フィールドがこれらのタイプのいずれかである場合は、CONVERTを使用して文字列を非バイナリ文字列に変換する必要があります。

 LOWER(CONVERT(@str USING latin1))
于 2012-09-03T12:56:36.607 に答える