আমি একটি ক্ষেত্রের একটি নির্দিষ্ট স্ট্রিং খুঁজছি এবং একটি নতুন স্ট্রিং সঙ্গে এটি প্রতিস্থাপন করতে চাই। বিশেষত, আমি চাই একটি ইউআরএল এর সমস্ত উল্লেখ অন্য ইউআরএলে পরিবর্তন করা হোক। আমি এই এসকিউএল বিবৃতিটি তৈরি করেছি এবং এটি mysql>
মাইএসকিউএল কমিউনিটি সার্ভার 5.1.54 ব্যবহার করে সেন্টোস 5.5- এ একটি প্রম্পটে চালাচ্ছি।
update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%');
প্রতিক্রিয়াটি হ'ল:
Query OK, 0 rows affected (0.02 sec)
Rows matched: 618 Changed: 0 Warnings: 0
কোনও পরিবর্তন কেন করা হচ্ছে না তা আমি কীভাবে ট্র্যাক করব?
সম্পাদনা 1:
অ্যারন বারট্র্যান্ডকে ধন্যবাদ, আমি আবিষ্কার করেছি যে REPLACE()
ওয়াইল্ডকার্ড পরিচালনা করতে পারে না এবং আমি এটি সম্পূর্ণরূপে ভুল ব্যবহার করেছি (মনে করুন: WHERE
অনুচ্ছেদে অনুপস্থিত )। আমার সংস্কারিত বক্তব্যটি এখানে:
UPDATE [table]
SET [column] =
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
WHERE
[column]
LIKE
'%companydomain.com%';
যার কাছে আমি পুরানো, পরিচিত:
Query OK, 0 rows affected (0.02 sec)
Rows matched: 167 Changed: 0 Warnings: 0
আমি কী ভুল করছি?
সম্পাদনা 2:
আমি বলছিলাম আমি কী ভুল করছিলাম !! আমি অনুমান নিয়ে প্রশ্ন করছিলাম না। আমার ধারণাটি ছিল যে আমি যে স্ট্রিংটি প্রতিস্থাপন করছি তা সমস্ত নিম্নতর ক্ষেত্রে ছিল। WHERE ধারাটি যে সমস্ত জিনিস দেখেছিল তা ফিরিয়ে দিচ্ছেLIKE %companydomain.com%
। এর মধ্যে সমস্ত ক্যাপিটালাইজেশন অনুমতি যেমন কোম্পানীডোমেন ডটকম, কোএমপএএনওয়াইডএইএমইএন ডটকম এবং ইত্যাদি অন্তর্ভুক্ত রয়েছে etc.
এটি REPLACE()
এরপরে কেটেডোডোমেন.কম এর সাথে ক্রেডিট ডোমেন.ওর.র সাথে এটির পরিবর্তে কঠোরভাবে সন্ধান করছে।
REPLACE (
[column],
'companydomain.com',
'companydomain.org' )
অবশ্যই আমার রেকর্ডগুলি ফিরিয়ে দেওয়া হচ্ছে, তবে কিছুই প্রতিস্থাপন করা হচ্ছে না। একবার আমি REPLACE()
মূলধনকে আমলে নেওয়ার জন্য পরিবর্তিত হয়ে গেলে সমস্ত রেকর্ড আপডেট হয়েছিল এবং দেখা যাচ্ছে যে সবকিছু ঠিক আছে। REPLACE()
আমার দৃশ্যের জন্য সঠিক বাক্য গঠনটি ছিল:
REPLACE (
[column],
'CompanyDomain.com',
'companydomain.org' )