Postgresql এ, আমি কীভাবে একটি ডাটাবেস কলামের মধ্যে স্ট্রিংয়ের সমস্ত দৃষ্টান্ত প্রতিস্থাপন করব?
বলুন আমি উদাহরণস্বরূপ সমস্ত দৃষ্টান্তের cat
সাথে প্রতিস্থাপন করতে চাই dog
।
এটি করার সর্বোত্তম উপায় কী?
Postgresql এ, আমি কীভাবে একটি ডাটাবেস কলামের মধ্যে স্ট্রিংয়ের সমস্ত দৃষ্টান্ত প্রতিস্থাপন করব?
বলুন আমি উদাহরণস্বরূপ সমস্ত দৃষ্টান্তের cat
সাথে প্রতিস্থাপন করতে চাই dog
।
এটি করার সর্বোত্তম উপায় কী?
উত্তর:
আপনি পোস্টগ্র্যাসিকেলের প্রতিস্থাপন ফাংশনটি ব্যবহার করতে চান :
replace(string text, from text, to text)
এই ক্ষেত্রে :
UPDATE <table> SET <field> = replace(<field>, 'cat', 'dog')
তবে সচেতন থাকুন যে এটি স্ট্রিং-টু-স্ট্রিং প্রতিস্থাপন হবে, সুতরাং 'বিভাগ' হয়ে উঠবে 'ডোজেগরি'। regexp_replace ফাংশন আপনাকে প্রতিস্থাপন করতে চাইলে একটি কঠোর ম্যাচ প্যাটার্ন নির্ধারণ করতে সহায়তা করতে পারে।
regexp_replace
আপনার যদি কঠোর প্রতিস্থাপনের ম্যাচিংয়ের প্রয়োজন হয় তবে পোস্টগ্রিসএসকিউএল এর regexp_replace
কার্যকারিতা POSIX নিয়মিত প্রকাশের ধরণ ব্যবহার করে মেলতে পারে। এটা তোলে সিনট্যাক্স হয়েছে regexp_replace (উৎস, প্যাটার্ন, প্রতিস্থাপন [পতাকা]) ।
আমি পতাকাগুলি i
এবং g
কেস-সংবেদনশীল এবং গ্লোবাল মিলের জন্য যথাক্রমে ব্যবহার করব। আমিও ব্যবহার করবে \m
এবং \M
শুরুতে এবং একটি শব্দের শেষে মেলে যথাক্রমে।
রেজেক্স রিপ্ল্যাক্টমেন্ট সম্পাদন করার সময় সাধারণত বেশ কয়েকটি গোচা থাকে। আসুন দেখুন কুকুরের সাথে একটি বিড়ালকে প্রতিস্থাপন করা কতটা সহজ ।
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog');
--> Cat bobdog cat cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'i');
--> dog bobcat cat cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'g');
--> Cat bobdog dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'gi');
--> dog bobdog dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat', 'dog', 'gi');
--> dog bobcat dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat\M', 'dog', 'gi');
--> dog bobdog dog cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat\M', 'dog', 'gi');
--> dog bobcat dog cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat(s?)\M', 'dog\1', 'gi');
--> dog bobcat dog dogs catfish
এত কিছুর পরেও কমপক্ষে একটি অমীমাংসিত অবস্থা রয়েছে। উদাহরণস্বরূপ, "বিড়াল" দিয়ে শুরু হওয়া বাক্যগুলিকে ছোট-বড় "কুকুর" দিয়ে প্রতিস্থাপন করা হবে যা বাক্য মূলধনকে ভেঙে দেয়।
সমস্ত বিবরণের জন্য বর্তমান পোস্টগ্রাইএসকিউএল প্যাটার্নের সাথে মেলে দস্তাবেজগুলি দেখুন।
আমার উদাহরণ দেওয়া, সম্ভবত সবচেয়ে নিরাপদ বিকল্প হতে পারে:
UPDATE table SET field = regexp_replace(field, '\mcat\M', 'dog', 'gi');
আপনি replace
ফাংশন ব্যবহার করতে পারেন
UPDATE your_table SET field = REPLACE(your_field, 'cat','dog')
ফাংশন সংজ্ঞা নিম্নরূপ (থেকে পেয়েছেন করা হয় এখানে ):
replace(string text, from text, to text)
এবং পরিবর্তিত পাঠ্য ফেরত দেয়। আপনি এই বর্গক্ষেত্রের উচ্চারণটিও পরীক্ষা করে দেখতে পারেন ।
এখানে একটি উদাহরণ যা নিয়মিত এক্সপ্রেশন ব্যবহার করে আন্ডারস্কোর দিয়ে কলামে 1 বা ততোধিক সাদা স্থানের সমস্ত অক্ষরের প্রতিস্থাপন করে -
select distinct on (pd)
regexp_replace(rndc.pd, '\\s+', '_','g') as pd
from rndc14_ndc_mstr rndc;