একাধিক রেকর্ডে স্ট্রিং প্রতিস্থাপন করতে আমি কীভাবে মাইএসকিউএল প্রতিস্থাপন () ব্যবহার করতে পারি?


166

আমাদের একটি ডাটাবেস রয়েছে যা একটি কলামে কিছু খারাপ ডেটা সহ অনেকগুলি রেকর্ড রয়েছে, যাতে এম্বেড করা সম্পাদক এমন কিছু স্টাফ ছেড়ে যায় যা এড়ানো উচিত ছিল না এবং এটি উত্পন্ন লিঙ্কগুলি ভঙ্গ করে।

সমস্ত রেকর্ডে খারাপ চরিত্রগুলি প্রতিস্থাপন করতে আমি একটি ক্যোয়ারী চালাতে চাই, তবে কীভাবে এটি করা যায় তা বুঝতে পারি না। আমি দেখেছি ফাংশন মাইএসকিউএল মধ্যে, কিন্তু কিভাবে আমি এটি একটি কোয়েরি ভিতরে ব্যবহার করতে পারি?replace()

যদি আমি স্ট্রিং প্রতিস্থাপন করতে চেয়েছিলেন উদাহরণস্বরূপ, কি সঠিক বাক্য গঠন হবে &lt;প্রকৃত কম কৌনিক বন্ধনী (সঙ্গে <) সকল রেকর্ড আছে &lt;articleItemকলামে? এটি কি একটি একক ক্যোয়ারিতে করা যেতে পারে (উদাহরণস্বরূপ সমস্ত নির্বাচন এবং এক বদলে প্রতিস্থাপন), বা আমাকে একাধিক প্রশ্ন করতে হবে? এমনকি এটি একাধিক প্রশ্ন থাকলেও আমি একাধিক replace()রেকর্ডে কোনও ক্ষেত্রের মান প্রতিস্থাপন করতে কীভাবে ব্যবহার করব?


5
আপনি কিছু করার আগে নিশ্চিত হয়ে নিন যে আপনি ডাটাবেসটিকেও ব্যাকআপ করে রেখেছেন। আপনি কোনও ক্ষেত্র আপডেট করার জন্য আপডেট ব্যবহার করবেন।
ম্যাট


উত্তর:


395

খুব জেনেরিক স্তরে

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

WHERE SomeOtherColumn LIKE '%PATTERN%'

আপনার ক্ষেত্রে আপনি বলছেন যে এগুলি পালিয়ে গেছে কিন্তু যেহেতু তারা কীভাবে পালিয়েছে আপনি নির্দিষ্ট করেননি, তাই আসুন তারা বলি যে তারা পালিয়ে গেছে GREATERTHAN

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

WHERE articleItem LIKE '%GREATERTHAN%'

যেহেতু আপনার ক্যোয়ারীটি আসলে স্ট্রিংয়ের ভিতরে কাজ করছে, আপনার WHEREধারাটি এর প্যাটার্ন মেলানো কোনও কার্যকারিতা উন্নত করার সম্ভাবনা নেই - এটি প্রকৃতপক্ষে সার্ভারের জন্য আরও কাজ তৈরি করতে চলেছে। আপনার কাছে আরও কোথাও ক্লোজ সদস্য নেই যা এই ক্যোয়ারীটিকে আরও ভালভাবে সম্পাদন করতে চলেছে, আপনি কেবল আপডেটের মতো এটি করতে পারেন:

UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

আপনি একাধিক REPLACEকল বাসাতেও পারেন

UPDATE MyTable
SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')

আপনি ডেটা নির্বাচন করার সময় আপনি এটিও করতে পারেন (আপনি যখন এটি সংরক্ষণ করবেন তার বিপরীতে)।

এর পরিবর্তে:

SELECT MyURLString From MyTable

আপনি করতে পারেন

SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable


7
ছোটখাট টাল: GREATERTHAN হল '>'
অলিভিয়ের Dulac

23
UPDATE some_table SET some_field = REPLACE(some_field, '&lt;', '<')

স্থির &lt;এস। আপনার যেমন & এর এনকোডিং ব্যবহার করতে হবে: &amp;:)
ড্যান জে

আমি এটি পুনরায় সম্পাদনা করেছি। আমাকে জানতে দেওয়ার জন্য ধন্যবাদ। আমি বললাম আমি জানি না কীভাবে মুহুর্ত পরে এটি আমার উপর ছড়িয়ে পড়ে। আমার পৃথিবী যেভাবে কাজ করে তা স্থির করে। :)
সিমশাঁ

6

এটা যাচাই কর

UPDATE some_table SET some_field = REPLACE("Column Name/String", 'Search String', 'Replace String')

যেমন নমুনা স্ট্রিং সহ:

UPDATE some_table SET some_field = REPLACE("this is test string", 'test', 'sample')

কলাম / মাঠের নাম সহ ইজি:

UPDATE some_table SET some_field = REPLACE(columnName, 'test', 'sample')

4

আপনি এটির মতো একটি সঞ্চিত পদ্ধতি লিখতে পারেন:

স্যানিটাইজ_ টেবিল তৈরি করুন ()

BEGIN

আন্ডারস্কোর সহ স্থান পুনরুদ্ধার করুন

আপডেট ছক সেট FIELDNAME = প্রতিস্থাপন ( FIELDNAME , "", ": _") কোথায় FIELDNAME শূন্য নয়;

# মুছে ফেলা

আপডেট ছক সেট FIELDNAME = প্রতিস্থাপন ( FIELDNAME ,, "" "।") কোথায় FIELDNAME শূন্য নয়;

#মুছে ফেলা (

আপডেট ছক সেট FIELDNAME = প্রতিস্থাপন ( FIELDNAME , "(", "") যেখানে FIELDNAME শূন্য নয়;

#মুছে ফেলা )

আপডেট ছক সেট FIELDNAME = প্রতিস্থাপন ( FIELDNAME , ")", "") যেখানে FIELDNAME শূন্য নয়;

# চাপুন বা আপনার যে কোনও চর মুছুন

# ..........................

শেষ

এইভাবে আপনি টেবিলের উপরে নিয়ন্ত্রণকে নিয়ন্ত্রণ করেছেন।

আপনি এটি তৈরির সঞ্চিত প্রক্রিয়াটিকে সাধারণকরণ করতে পারেন, ইনপুট পরামিতি স্যানিটোজ করার জন্য টেবিলের সাথে প্যারাম্যাট্রিক


1
এই নাল চেকগুলি অপ্রয়োজনীয়
kiedysktos

মাইএসকিএল সঞ্চিত পদ্ধতি তৈরি করার জন্য কি কোনও সহজ এবং নিরাপদ সরঞ্জাম রয়েছে?
ইভান স্লটার

0

এটি আপনাকে সাহায্য করবে।

UPDATE play_school_data SET title= REPLACE(title, "&#39;", "'") WHERE title = "Elmer&#39;s Parade";

ফলাফল:

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