মাইএসকিউএল একটি ক্ষেত্রের কিছু পাঠ্য অনুসন্ধান করুন এবং প্রতিস্থাপন করুন


257

মাইএসকিউএল কোয়েরিটি কোনও টেবিলের একটি নির্দিষ্ট ক্ষেত্রে একটি পাঠ্য অনুসন্ধান এবং প্রতিস্থাপন করবে?

অর্থাত অনুসন্ধান fooএবং প্রতিস্থাপন barতাই মান সহ কোনো ক্ষেত্র সহ একটি রেকর্ড hello fooহয়ে hello bar

উত্তর:


490

পরিবর্তন করুন table_nameএবং fieldপ্রশ্নে আপনার টেবিল নাম এবং ক্ষেত্র মেলে:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;

79
আপডেট [টেবিলের নাম] SET [ক্ষেত্রের নাম] = প্রতিস্থাপন ( [field_name], "foo", "বার");
মিলাই ডটকম

6
আমি মনে করি এটি ব্যবহার না করা দ্রুত WHERE instr(field, 'foo') > 0;(যাতে এটি 2 টি অনুসন্ধান করে না) ... আমি কি ভুল করছি?
manমানমজা

2
@ ট্রেডডেল, ​​এসকিউএল স্ট্রিংগুলিতে কোনও পদ 1 থেকে শুরু হবে না start
অ্যালেক্সিস উইল্ক

2
@ মাইনেজা, @ আয়ার WHEREআপনি যে সমস্ত দফায় দফায় দফায় দফায় দফায় দফায় কাজ না করে চলুন UPDATE...
অ্যালেক্সিস উইল্ক

7
প্রিংয়ের মতো, যদি আপনিও এর মতো কোনও মন্তব্য করতে চলেছেন তবে আপনি কেন এটি ব্যাখ্যা করতে চাইতে পারেন। এটি কি মূল পরামর্শে ভুল ছিল, না আপনার পক্ষে ভুল ছিল? এবং আপনি কি জানেন যে কোনও ডাটাবেসে কোনও ঝাড়ফুঁক পরিবর্তন করার আগে আপনি প্রথমে এটি ব্যাক আপ করার কথা?
পিডওয়াকার

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

2
আমাকে সাহায্য করে ছিল. সমস্ত নুবসের জন্য, দয়া করে বর্গাকার বন্ধনীগুলি সরান।
অনন্ত রাজু সি

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

উদাহরণস্বরূপ, যদি আমি জন দ্বারা মার্কের সমস্ত উপস্থিতি প্রতিস্থাপন করতে চাই তবে আমি নীচে ব্যবহার করব,

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

6

এবং আপনি যদি অন্য কোনও ক্ষেত্রের মানের উপর ভিত্তি করে অনুসন্ধান এবং প্রতিস্থাপন করতে চান তবে আপনি একটি সংযোগ করতে পারেন:

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

কেবল এখানে এটি রাখা যাতে অন্যরা এটি একবারে খুঁজে পায়।


আপনি যদি ক্ষেত্রের নামটি উদ্ধৃত করেন তবে নিশ্চিত করুন যে আপনি সঠিক ধরণের উদ্ধৃতি ব্যবহার করেছেন !
200_সাকসেস

4

আমার অভিজ্ঞতায়, দ্রুততম পদ্ধতিটি

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

INSTR()উপায় দ্বিতীয় দ্রুততম এবং বাদ WHEREদফা পুরাপুরি, ধীরতম হয় এমনকি যদি কলাম সূচীবদ্ধ করা হয় না।


আমার জন্য কাজ করে কারণ আমার আরও একটি ধারা যুক্ত করতে হবে যেখানে। আপডেট টেবিলের নাম SET ক্ষেত্র = প্রতিস্থাপন (ক্ষেত্র, 'foo', 'বার') যেখানে ক্ষেত্র পছন্দ '% foo%' এবং অন্যান্য ক্ষেত্র = 'foo22'
সর্বোচ্চ

1

প্রতিস্থাপন স্ট্রিং ফাংশন যা করতে হবে।


আমার জন্য কাজ কর. এটি নির্ভর করে আপনি কীভাবে প্রশ্নের ব্যাখ্যা করবেন। আপনি পরিবর্তন করতে ডাটাবেসের এন্ট্রি প্রয়োজন, তাহলে ব্যবহার update। অন্যথায় এই সমাধানটি ক্ষেত্রগুলি আপডেট না করে ব্যবহার করা যেতে পারে বলে এটি আরও ভাল।
গ্রুবার

0

আমি উপরোক্ত কমান্ড লাইনটি অনুসরণ হিসাবে ব্যবহার করেছি: টেবিল-NAME সেট FIELD = প্রতিস্থাপন করুন (FIELD, 'এবং', 'এবং'); উদ্দেশ্যটি ছিল এবং এর সাথে এবং এর সাথে "" এ "ছোট ছোট হওয়া উচিত)। সমস্যাটি হ'ল এটি ডাটাবেসে "এবং" সন্ধান করতে পারে না, তবে আমি যদি "% এবং%" এর মতো ব্যবহার করি তবে এটি এটি শব্দের অংশ বা এমনকী ইতিমধ্যে ছোট হাতের অক্ষরের সাথে যুক্ত অন্যান্য অনেকগুলি এবং এর সাথে এটির সন্ধান করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.