Programming

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

procodes 2020. 2. 29. 15:37
반응형

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


SQL Sever경로 ( UNC또는 다른 방법 )를 참조 하는 테이블 ( )이 있지만 이제 경로가 변경됩니다.

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

간단한 방법으로 어떻게 할 수 update있습니까?


이 쉬운 일이다 :

update my_table
set path = replace(path, 'oldstring', 'newstring')

UPDATE [table]
SET [column] = REPLACE([column], '/foo/', '/bar/')

위의 시도했지만 올바른 결과를 얻지 못했습니다. 다음 중 하나가 수행됩니다.

update table
set path = replace(path, 'oldstring', 'newstring') where path = 'oldstring'

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에 유효하지 않습니다 .


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

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

모든 답변은 훌륭하지만 좋은 예를 드리고 싶습니다.

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

이것이 더 나은 시각화를 제공하기를 바랍니다.


select replace(ImagePath, '~/', '../') as NewImagePath from tblMyTable 

여기서 "ImagePath"는 열 이름입니다.
"NewImagePath"는 임시 열입니다. "ImagePath"의 이름 삽입
"~ /"은 현재 문자열입니다. (오래된 문자열)
"../"는 필요한 문자열입니다. (새 문자열)
"tblMyTable"은 데이터베이스의 테이블입니다.


대상 열 유형이 text 와 같은 varchar / nvarchar 이외의 경우 열 값을 문자열로 캐스트 한 후 다음과 같이 변환해야합니다.

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

replace 기능을 사용하여 경로를 교체해야합니다.

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

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

그것이 효과가 있기를 바랍니다.


런타임에 전자 메일 템플릿의 큰 텍스트를 바꿀 수도 있습니다. 여기 간단한 예가 있습니다.

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

참고 URL : https://stackoverflow.com/questions/814548/how-to-replace-a-string-in-a-sql-server-table-column



반응형