এসকিউএলাইট - একটি স্ট্রিংয়ের অংশটি প্রতিস্থাপন করুন


103

এটা কি সম্ভব ব্যবহার SQLএকটি ইন SQLiteটেবিল একটি স্ট্রিং এর অংশ প্রতিস্থাপন কিভাবে?

উদাহরণস্বরূপ, আমার একটি টেবিল রয়েছে যেখানে ক্ষেত্রগুলির মধ্যে একটিতে একটি ফাইলের পথ ধরে। স্ট্রিংয়ের কিছু অংশ প্রতিস্থাপন করা কি সম্ভব, যেমন?

c:\afolder\afilename.bmp

হয়ে

c:\anewfolder\afilename.bmp

?

উত্তর:


206

আপনি replace()কোয়েরিতে স্ট্রিং প্রতিস্থাপন সম্পাদন করতে বিল্ট ইন ফাংশনটি ব্যবহার করতে পারেন ।

অন্যান্য স্ট্রিং ম্যানিপুলেশন ফাংশন (এবং আরও) এসকিউএলাইট মূল ফাংশন তালিকায় বিশদযুক্ত

নিম্নলিখিতটি আপনাকে সঠিক দিকে নির্দেশ করবে।

UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\' ) WHERE field LIKE 'C:\afolder\%';


6
যদিও যেখানে ক্লজটি প্রয়োজনীয় নয়, এটি কিছুটা মনের প্রশান্তি দেয়। WHERE ব্যতীত স্কেললাইট আপনাকে জানাবে যে আপনার টেবিলের প্রতিটি সারি প্রভাবিত হয়েছিল। WHERE ব্যবহার করে, আপনি সম্ভাব্য কয়েক হাজারের পরিবর্তে কেবলমাত্র কয়েক ডজন বা এর বেশি সারি আশা করেছিলেন।
ওয়েস্টন ওয়েডিং

2
@ ওয়েস্টনওয়েডিং আমি কোয়ারির সময়টি ও যেখানেই ছাড়ার সাথে তুলনা করেছি। জিজ্ঞাসা দ্বিগুণ সময় নিচ্ছে যেখানে।
পরাগ বাফনা

এফওয়াইআই, এটি এবং ভ্লাদক্রসের সমাধানটি সংবেদনশীল। এটিকে সংবেদনশীল হওয়ার জন্য আমি লাইক স্টেটমেন্ট সন্নিবেশ নিয়ে পরীক্ষা-নিরীক্ষা করেছি, তবে আমি এটি কাজ করতে পারি না, এসকিউএলাইট রিপ্লেস কমান্ড দিয়ে এটি সম্ভব বলে আমি মনে করি না।
শ্যাডো লাইবারাল

ধন্যবাদ। ডার্কটেবল চিত্রগুলির অবস্থান সঞ্চয় করতে একটি স্ক্লাইট ডিবি ব্যবহার করে, সুতরাং এটি আমার প্রায় 9000 পরিবর্তনগুলি সংরক্ষণ করেছিল!
ফিল

29

@ অ্যান্ড্রু উত্তর আংশিকভাবে সঠিক। WHEREএখানে ধারা ব্যবহার করার দরকার নেই :

  1. কেবলমাত্র ক্ষেত্রগুলি যে C:\afolderকোনওভাবেই প্রভাবিত হবে, এটি পরীক্ষা করার কোনও কারণ নেই। এটা অত্যধিক।
  2. 'C:\afolder\%'কেবলমাত্র ক্ষেত্রগুলি C:\afolder\কেবলমাত্র দিয়ে শুরু করবে । আপনার যদি স্ট্রিংয়ের ভিতরে এই পথ থাকে?

সুতরাং সঠিক ক্যোয়ারীটি কেবলমাত্র:

UPDATE table SET field = replace( field, 'C:\afolder\', 'C:\anewfolder\');

এটি কি "ফিল্ড" কলামের প্রতিটি স্ট্রিংয়ের স্ট্রিং প্রতিস্থাপন করবে?
ফিফাল্ট্রা

@ ফিফাল্ট্রা হ্যাঁ
16'16 এ পুনরায় পুনর্নির্ধারণ

দ্রষ্টব্য যে আপনি যখন ফাইল সিস্টেমের পাথগুলি আপেক্ষিক (পরম পরিবর্তে) হয়ে থাকেন সে ক্ষেত্রে আপডেট করতে চাইলে আমি প্রতিস্থাপন () ব্যবহার করার পরামর্শ দেব না। দেখুন stackoverflow.com/questions/50161090/...
NameZero912

10

এবং যদি আপনি কেবল স্থায়ী পরিণতি ছাড়াই কোনও প্রশ্নে এটি করতে চান:

SELECT fieldA, replace(field, 'C:\afolder\', 'C:\anewfolder\'), fieldB FROM table;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.