복붙노트

[SQL] SQL 문자열에 문자열의 첫 번째 발생을 교체

SQL

SQL 문자열에 문자열의 첫 번째 발생을 교체

나는 "또는 CCC 또는 BBB 또는 AAA"이 "CCC 또는 BBB 또는 AAA"같은 것을 얻기 위해 우주로 첫 번째 항목을 대체 할 뭔가가있는 @temp 테이블에서 데이터를 가져올 수 있습니다. 나는 물건을 시도하고 대체하지만 그들은 나에게 원하는 결과를 얻을하지 않는 것입니다

나는 시도하는 것 :

DECLARE @stringhere as varchar(500)

DECLARE @stringtofind as varchar(500)

set @stringhere='OR contains or cccc or  '

set @stringtofind='or'
select STUFF('OR contains or cccc or  ',PATINDEX('or', 'OR contains or cccc or  '),0 ,' ')

해결법

  1. ==============================

    1.당신은 당신이 원하는 것을 달성하기 위해 물건과 CHARINDEX의 조합을 사용할 수 있습니다 :

    당신은 당신이 원하는 것을 달성하기 위해 물건과 CHARINDEX의 조합을 사용할 수 있습니다 :

    SELECT STUFF(col, CHARINDEX('substring', col), LEN('substring'), 'replacement')
    FROM #temp
    

    CHARINDEX 열에서 "서브 스트링 '의 처음 나타나는 인덱스를 반환 (COL,"서브 스트링'). 다도는 '교체'이 발생을 대체합니다.

  2. ==============================

    2.당신이 2 %가 이전 대상 문자열에 후행 그리워 보인다

    당신이 2 %가 이전 대상 문자열에 후행 그리워 보인다

    시도하십시오 :

    select STUFF(@stringhere, PATINDEX('%' + @stringtofind + '%', @stringhere), LEN(@stringtofind), ' ')
    
  3. ==============================

    3.위 그림과 같이 당신은 CHARINDEX 또는 PATINDEX을 할 수 있지만 나는 또한 경우에, 그것은 당신의 @stringhere에 포함되지 당신의 @stringtoFind을 COALESCE를 추가하는 것이 좋습니다.

    위 그림과 같이 당신은 CHARINDEX 또는 PATINDEX을 할 수 있지만 나는 또한 경우에, 그것은 당신의 @stringhere에 포함되지 당신의 @stringtoFind을 COALESCE를 추가하는 것이 좋습니다.

    SELECT COALESCE(STUFF(@stringhere, PATINDEX('%' + @stringtofind + '%', @stringhere), LEN(@stringtofind), ' '), @stringhere)
    
  4. from https://stackoverflow.com/questions/38911588/replace-first-occurrence-of-substring-in-a-string-in-sql by cc-by-sa and MIT license