[sql] 문자열의 UPDATE 및 REPLACE 부분

나는 두 개의 열이있는 테이블을 가지고, 한 IDValue. 두 번째 열에서 일부 문자열의 일부를 변경하고 싶습니다.

테이블 예 :

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문자열이 필요하지 않습니다. 나는 노력 UPDATEREPLACE:

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%');


답변

당신은 7 개의 문자 인 날짜 코드가있는 테이블이 하나 있습니다.

"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%


답변

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