কীভাবে একটি এসকিউএল সার্ভারের টেবিল কলামে একটি স্ট্রিং প্রতিস্থাপন করবেন


364

আমার একটি টেবিল রয়েছে ( SQL Sever) যা পাথগুলি উল্লেখ করে ( UNCবা অন্যথায়) তবে এখন পথটি পরিবর্তন হতে চলেছে।

পাথ কলামে আমার অনেক রেকর্ড রয়েছে এবং আমার পথের একটি অংশ পরিবর্তন করতে হবে তবে পুরো পথটি নয়। এবং প্রতিটি রেকর্ডে আমার একই স্ট্রিংটি নতুনটিতে পরিবর্তন করা দরকার।

আমি কীভাবে এটি একটি সহজ দিয়ে করতে পারি update?

উত্তর:


604

এটি সহজ:

update my_table
set path = replace(path, 'oldstring', 'newstring')

43
আমি where path like '%oldstring%'প্রচুর ডেটা থাকলে সাধারণত যুক্ত করতাম ।
ডেরেক টোমস

1
শর্তটি বোধগম্য কারণ কারণ যদি আমার টেবিলে 50 টি সারি থাকে এবং আমি যদি 10 টি সারি প্রতিস্থাপন ফাংশনটির সাথে প্রতিস্থাপন করি তবে এটি সমস্ত 50 টি সারিকে প্রভাবিত করে, যদিও এটি আপনার যেখানে শর্ত না থাকলে 10 টি সারি প্রতিস্থাপন করে। তবে আপনার যদি উপরে অবস্থার মন্তব্যে বর্ণিত শর্ত থাকলে এটি কেবলমাত্র 10 টি সারিকে প্রভাবিত করে।
আইমালেক 18


28

আমি উপরোক্ত চেষ্টা করেছিলাম তবে এটি সঠিক ফলাফল দেয় নি। নিম্নলিখিতটি করে:

update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'

11
এটি পুরোপুরি প্রতিস্থাপন পদ্ধতিটি ব্যবহারের উদ্দেশ্যকে পরাস্ত করে। আপনি একই জিনিসটি সম্পন্ন করতে পারেন: আপডেট টেবিল সেট পথ = 'নিউস্ট্রিং' যেখানে পথ = 'ওল্ডস্ট্রিং';
আয়ান

11
সম্ভবত আপনি বোঝাতে চেয়েছিলেন where path like '%oldstring%'?
v010dya

17
UPDATE CustomReports_Ta
SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), '\\Ingl-report\Templates', 'C:\Customer_Templates')
where CAST(vchFilter AS nvarchar(max)) LIKE '%\\Ingl-report\Templates%'

CASTফাংশন ছাড়াই আমি একটি ত্রুটি পেয়েছি

আর্গুমেন্ট ডেটা প্রকারের ফাংশনের ntextআর্গুমেন্টের জন্য অবৈধ replace


9

আপনি এই কোয়েরিটি ব্যবহার করতে পারেন

update table_name set column_name = replace (column_name , 'oldstring' ,'newstring') where column_name like 'oldstring%'

8

সমস্ত উত্তর দুর্দান্ত তবে আমি আপনাকে একটি ভাল উদাহরণ দিতে চাই

select replace('this value from table', 'table',  'table but updated')

এই এসকিউএল বিবৃতি প্রদত্ত বিবৃতিতে (প্রথম প্যারামিটার) তৃতীয় প্যারামিটারের সাথে "টেবিল" (দ্বিতীয় প্যারামিটার) শব্দের অস্তিত্বকে প্রতিস্থাপন করবে

প্রাথমিক মান হয় this value from table বদলে ফাংশন কার্যকর করার পরে এটি হবেthis value from table but updated

এবং এখানে একটি বাস্তব উদাহরণ

UPDATE publication
SET doi = replace(doi, '10.7440/perifrasis', '10.25025/perifrasis')
WHERE doi like '10.7440/perifrasis%'

উদাহরণস্বরূপ যদি আমাদের এই মান থাকে

10.7440/perifrasis.2010.1.issue-1

এটা পরিনত হবে

10.25025/perifrasis.2010.1.issue-1

আশা করি এটি আপনাকে আরও ভাল রূপ দেয়


6
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

যেখানে "ইমেজপথ" আমার কলামের নাম।
"NewImagePath" temporery কলাম নাম "ImagePath" এর insted হয়
"~ /" আমার বর্তমান স্ট্রিং। (পুরাতন STRING)
"../" আমার requried স্ট্রিং। (নতুন STRING)
"tblMyTable" ডাটাবেসের মধ্যে আমার টেবিল নেই।


4

যদি লক্ষ্য কলামের ধরণ varchar / মত nvarchar ছাড়া অন্য টেক্সট , আমরা স্ট্রিং হিসেবে কলাম মান নিক্ষেপ এবং তারপর এটি হিসাবে রূপান্তর করা প্রয়োজন:

update URL_TABLE
set Parameters = REPLACE ( cast(Parameters as varchar(max)), 'india', 'bharat')
where URL_ID='150721_013359670'

2

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

update table_name set column_name = replace(column_name, 'oldstring', 'newstring')

এখানে column_name আপনি যে কলামটি পরিবর্তন করতে চান তা বোঝায়।

আশা করি এটি কার্যকর হবে।


0

রান সময় আপনি ইমেল টেম্পলেট জন্য বড় পাঠ্য প্রতিস্থাপন করতে পারেন, এটির জন্য এখানে একটি সাধারণ উদাহরণ।

DECLARE @xml NVARCHAR(MAX)
SET @xml = CAST((SELECT [column] AS 'td','',        
        ,[StartDate] AS 'td'
         FROM [table] 
         FOR XML PATH('tr'), ELEMENTS ) AS NVARCHAR(MAX))
select REPLACE((EmailTemplate), '[@xml]', @xml) as Newtemplate 
FROM [dbo].[template] where id = 1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.