سؤال

ما MySQL query لا نص بحث واستبدال في مجال معين واحد في الجدول ؟

أولا-هاء.البحث عن foo واستبدال مع bar حتى سجل مع حقل مع قيمة hello foo يصبح hello bar.

هل كانت مفيدة؟

المحلول

تغيير table_name و field لتتناسب مع الجدول الخاص بك اسم المجال في السؤال:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
  • محل (سلسلة الوظائف)
  • INSTR (سلسلة الوظائف)

نصائح أخرى

UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');

و إذا كنت ترغب في البحث والاستبدال على أساس قيمة حقل آخر هل يمكن أن تفعل CONCAT:

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));

فقط أن يكون هذا واحد هنا حيث أن الآخرين سوف تجد أنه في مرة واحدة.

 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

مثل على سبيل المثال ، إذا كنت تريد استبدال كافة تواجدات جون مارك وسوف تستخدم أدناه ،

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');

على محل سلسلة وظيفة سوف تفعل ذلك.

في تجربتي, أسرع طريقة

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';

على INSTR() الطريقة الثانية-أسرع حذف WHERE شرط تماما هو أبطأ ، حتى إذا كان العمود غير المفهرسة.

أنا استخدم سطر الأوامر أعلاه كما يلي:تحديث الجدول اسم حقل set = replace(الميدان،'،'،'،');وكان الغرض من محل و و ("A" يجب أن تكون صغيرة).المشكلة هي أنه لا يمكن العثور على "و" في قاعدة البيانات ، ولكن إذا كنت تستخدم مثل "%و%" ثم يمكن أن تجد جنبا إلى جنب مع العديد من غيرها من الأدوية التي هي جزء من كلمة أو حتى تلك التي هي بالفعل صغيرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top