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


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.