it-swarm-ko.tech

SQL Server 테이블 열에서 문자열을 바꾸는 방법

경로 (UNC 또는 기타)를 참조하는 표 (SQL Sever)가 있지만 경로가 변경됩니다.

경로 열에는 많은 레코드가 있으며 경로의 일부만 변경해야하지만 전체 경로는 변경하지 않아야합니다. 그리고 모든 레코드에서 동일한 문자열을 새로운 문자열로 변경해야합니다.

간단한 update을 사용하면 어떻게 할 수 있습니까?

342
Iralda Mitro

이것은 쉽습니다.

update my_table
set path = replace(path, 'oldstring', 'newstring')
566
cjk
UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')
125
Marc Gravell

나는 위의 시도했지만 올바른 결과를 양보하지 않았다. 다음 중 하나가 수행합니다.

update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'
24
Caesar
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 함수가 없으면 오류가 발생했습니다.

인수 데이터 유형 ntextreplace 함수의 인수 1에 대해 유효하지 않습니다.

16
Igor Bakay

이 쿼리를 사용할 수 있습니다.

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

모든 대답은 훌륭하지만 좋은 예제를주고 싶습니다.

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

이 SQL 문은 지정된 문 (첫 번째 매개 변수) 안에있는 "table"(두 번째 매개 변수)의 존재를 세 번째 매개 변수로 대체합니다

초기 값은 this value from table이지만 replace 함수를 실행 한 후에는 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
Basheer AL-MOMANI
select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

여기서 "ImagePath"는 내 열 이름입니다.
"NewImagePath"는 "ImagePath"의 템포레리 열 이름입니다.
"~ /"은 현재 문자열입니다 (이전 문자열).
"../"은 내 requried 문자열입니다. (새 문자열)
"tblMyTable"은 데이터베이스에있는 내 테이블입니다.

5
Durgesh Pandey

대상 열 유형이 text 과 같이 varchar/nvarchar가 아닌 경우 열 값을 문자열로 변환 한 다음 변환해야합니다.

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

또한 실행시 이메일 템플리트의 대용량 텍스트를 대체 할 수 있습니다. 여기에 대한 간단한 예제가 있습니다.

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
0
Shekhar Patel

당신은 교체 기능의 도움으로 경로를 교체해야합니다.

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

여기서 column_name는 변경하려는 열을 나타냅니다.

희망이 작동합니다.

0
Love Pandey