لدي جدول به عمودين ، 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
عندما أقوم بتنفيذ البرنامج النصي ، لا يقوم SQL Server بالإبلاغ عن خطأ ، لكنه لا يقوم بتحديث أي شيء أيضًا. لماذا هذا؟
لا تحتاج إلى أحرف البدل في REPLACE
- إنها فقط تعثر على السلسلة التي تدخلها للوسيطة الثانية ، لذلك يجب أن تعمل الآتي:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123\', '')
WHERE ID <=4
(أضفت أيضًا الرمز \
في الاستبدال لأنني أفترض أنك لست بحاجة إلى ذلك أيضًا)
حاول إزالة الأحرف الفاصلة %
كما هو موضح أدناه
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <=4
لجعل الاستعلام يعمل بشكل أسرع في الجداول الكبيرة حيث لا يلزم تحديث كل سطر ، يمكنك أيضًا اختيار تحديث الصفوف التي سيتم تعديلها فقط:
UPDATE dbo.xxx
SET Value = REPLACE(Value, '123', '')
WHERE ID <= 4
AND Value LIKE '%123%'
الاستعلام:
UPDATE tablename
SET field_name = REPLACE(field_name , 'oldstring', 'newstring')
WHERE field_name LIKE ('oldstring%');
لديك جدول واحد حيث لديك رمز التاريخ الذي يشبه سبعة أحرف
"32-1000"
الآن تريد استبدال الكل
"32-"
مع
"14-"
استعلام SQL الذي يجب تشغيله هو
Update Products Set Code = replace(Code, '32-', '14-') Where ...(Put your where statement in here)
لأي شخص يريد استبدال البرنامج النصي الخاص بك.
update dbo.[TABLE_NAME] set COLUMN_NAME= replace(COLUMN_NAME, 'old_value', 'new_value') where COLUMN_NAME like %CONDITION%
يجب عليك استخدام استعلام التحديث أدناه
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
يجب أن يعمل أي من الاستعلامات أعلاه.
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