আপডেট এবং একটি স্ট্রিং এর অংশ


427

আমি দুটি কলাম সহ একটি টেবিল পেয়েছি, IDএবং Value। আমি দ্বিতীয় কলামে কিছু স্ট্রিংয়ের একটি অংশ পরিবর্তন করতে চাই।

সারণীর উদাহরণ:

ID            Value
---------------------------------
1             c:\temp\123\abc\111
2             c:\temp\123\abc\222
3             c:\temp\123\abc\333
4             c:\temp\123\abc\444

এখন স্ট্রিং 123\ইন Valueপ্রয়োজন হয় না। আমি চেষ্টা করেছি UPDATEএবং REPLACE:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '%123%', '')
WHERE ID <= 4

আমি যখন স্ক্রিপ্টটি কার্যকর করি এসকিউএল সার্ভার কোনও ত্রুটির প্রতিবেদন করে না, তবে এটি কোনও আপডেটও করে না। কেন এমন?


8
এটি কোনও কিছুর প্রতিস্থাপন করে না কারণ ওয়াইল্ডকার্ডগুলি ওয়াইল্ডকার্ড হিসাবে নয় বরং আক্ষরিক হিসাবে বিবেচিত হয়।
— stuhpa

উত্তর:


700

এতে আপনার ওয়াইল্ডকার্ডের দরকার নেই REPLACE- এটি দ্বিতীয় যুক্তির জন্য আপনি যে স্ট্রিংটি প্রবেশ করেছেন তা সন্ধান করে, সুতরাং নিম্নলিখিতটি কাজ করা উচিত:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123\', '')
WHERE ID <=4

(আমিও \প্রতিস্থাপনে যুক্ত করেছিলাম যেমন ধরে নিই যে আপনারও এর দরকার নেই)


1
এটি খাঁটি কাজ করে তবে নেক্সট টাইপের সাথে নয় :( ... >> এমএসজি 8116, স্তর 16, রাজ্য 1, লাইন 21 - আর্গুমেন্ট ডেটা টাইপ এনটেক্সট প্রতিস্থাপন ফাংশনের 1 টি আর্গুমেন্টের জন্য অবৈধ
— Ow

6
আমি শুধু সমাধান পাওয়া :) ===> stackoverflow.com/questions/4341613/...
— Owidat

2
অপেক্ষা করুন, `? isn't that escaping the '`চরিত্রটির সাথে কী আছে এবং এটিকে ভুল করে তোলে?
— মেকোহি

এটি সহায়ক ছিল
— স্ট্যানলে ওকপালা নওসা

এই যদি আপনার কলাম টাইপ লেখা বা NText হয় কাজ করবে না, এই উত্তর দেখার stackoverflow.com/questions/4341613/...
— আদিল এইচ রাজা

55

%নীচে হিসাবে চরগুলি সরানোর চেষ্টা করুন

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4

40

বড় টেবিলগুলিতে ক্যোয়ারীটি দ্রুত চালিত করতে যেখানে প্রতিটি লাইন আপডেট করার প্রয়োজন হয় না, আপনি কেবলমাত্র সারিগুলি পরিবর্তন করতে পারবেন যা পরিবর্তিত হবে:

UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'


8

আপনার একটি টেবিল রয়েছে যেখানে আপনার তারিখের কোড রয়েছে যা সাতটি অক্ষরের মতো

"32-1000"

এখন আপনি সমস্ত প্রতিস্থাপন করতে চান

"32-"

সঙ্গে

"14-"

আপনার চালিত এসকিউএল কোয়েরিটি হ'ল

Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)

3

যে কেউ আপনার স্ক্রিপ্ট প্রতিস্থাপন করতে চান।

update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%


4
পর্যালোচনা সারি থেকে : আমি আপনাকে অনুরোধ করতে দয়া করে আপনার উত্স-কোডের আশেপাশে কিছু প্রসঙ্গ যুক্ত করুন। কোড-কেবল উত্তরগুলি বোঝা মুশকিল। আপনি যদি আপনার পোস্টে আরও তথ্য যুক্ত করতে পারেন তবে এটি প্রশ্নকারী এবং ভবিষ্যতের পাঠকদের উভয়কেই সহায়তা করবে।
— আরবিটি

1
CREATE TABLE tbl_PersonalDetail
(ID INT IDENTITY ,[Date] nvarchar(20), Name nvarchar(20), GenderID int);

INSERT INTO Tbl_PersonalDetail VALUES(N'18-4-2015', N'Monay', 2),
                                     (N'31-3-2015', N'Monay', 2),
                                     (N'28-12-2015', N'Monay', 2),
                                     (N'19-4-2015', N'Monay', 2)

DECLARE @Date Nvarchar(200)

SET @Date = (SELECT [Date] FROM Tbl_PersonalDetail WHERE ID = 2)

Update Tbl_PersonalDetail SET [Date] = (REPLACE(@Date , '-','/')) WHERE ID = 2 

1
আপনার উত্তর কীভাবে সমস্যার সমাধান করে তা ব্যাখ্যা করুন, এটি প্রত্যেককে আরও স্পষ্টতার সাথে এবং ভবিষ্যতের রেফারেন্সের জন্য আপনার সমাধান বুঝতে সহায়তা করবে।
— আজিজ

1

আপনার নীচের আপডেট ক্যোয়ারীটি ব্যবহার করা উচিত

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id IN(1, 2, 3, 4)

UPDATE dbo.xxx SET Value=REPLACE(Value,'123\','') WHERE Id <= 4

উপরোক্ত প্রশ্নের যে কোনও একটিতে কাজ করা উচিত।


0

পার্সিয়ান শব্দের জন্য প্রতিস্থাপন

UPDATE dbo.TblNews
SET keyWords = REPLACE(keyWords, '-', N'،')

সহায়তা: dbo.TblNews - টেবিলের নাম

কীওয়ার্ডস - নিখুঁত নাম

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