Yanıtlar:
Değişim table_name
ve field
söz konusu tablo adı ve alanı eşleştirmek için:
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
WHERE instr(field, 'foo') > 0;
(bu yüzden 2 arama yapmaz) ... Yanlış mıyım?
WHERE
maddesi bir yapmak UPDATE
satırlar tümü üzerinde ...
UPDATE table_name
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');
UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);
Örneğin, John'un tüm oluşumlarını Mark ile değiştirmek istersem, aşağıda kullanacağım,
UPDATE student SET student_name = replace(student_name, 'John', 'Mark');
Ve başka bir alanın değerine göre arama yapmak ve değiştirmek isterseniz, bir CONCAT yapabilirsiniz:
update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));
Sadece burada bir tane olsun, böylece diğerleri bir anda bulacaktır.
Deneyimlerime göre, en hızlı yöntem
UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';
INSTR()
Yoludur ikinci en hızlı ve atlayarak WHERE
tamamen maddesini sütun endeksli olmasa bile, en yavaş olduğunu.
Yukarıdaki komut satırını aşağıdaki gibi kullandım: TABLE-NAME güncelleme FIELD = replace (FIELD, 'And', 've'); amaç And ile değiştirmekti ve ("A" küçük harfle yazılmalıdır). Sorun veritabanında "Ve" bulamıyor, ama "% Ve%" gibi kullanırsanız o zaman bir kelimenin parçası olan birçok and ve hatta küçük harf olanlar ile birlikte bulabilirsiniz.
[field_name]
, "foo", "bar");