2017-03-08 4 views
0

SQL 2012 replace 문에서 두 번째 인수에 변수를 사용하는 방법은 무엇입니까?
는 예컨대이 실행REPLACE에 변수 사용

declare @new nchar (10) 
declare @old nchar (10) 

set @new = 'ABC' 
set @old = 'DEF' 

update table 
set value = REPLACE (column,@old,@new) 
where ..... 

는 오류를 생성하지 않습니다,하지만 중 아무것도 업데이트되지 않습니다. 나는 @old 변수를 도랑

set value = REPLACE (column,'DEF',@new) 

다음 잘 작동과 같은 값으로 대체하는 경우

. 여기

+0

위의 SQL을 저장 프로 시저에 저장하여 문제가 해결되었습니다. Udhaya의 예를 시도했는데 select에서 제대로 작동하지만 업데이트가 아니라면 결과에 이르는 저장 프로 시저에 대한 오류가 발생했습니다. – Pauly

답변

0

참조 스레드 : What are practical differences between `REPLACE` and `INSERT ... ON DUPLICATE KEY UPDATE` in MySQL?

마크 어쩌면 문제에 답

내부적 교체는 삽입 후, 삭제 등을 수행한다. 이 행을 가리키는 외래 키 제약 조건이있는 경우 문제가 발생할 수 있습니다. 이 상황에서 REPLACE는 실패하거나 악화 될 수 있습니다. 외래 키가 계단식 삭제로 설정되면 REPLACE는 다른 테이블의 행을 삭제합니다. 이는 REPLACE 연산 전후에 제약 조건이 충족 되었더라도 발생할 수 있습니다.

INSERT ... ON 중복 사용 키 업데이트는이 문제를 방지하므로 바람직합니다.

0
declare @new varchar(50) 
declare @old varchar(50) 
declare @query varchar(50) 

set @new = 'ABCD' 
set @old = '1234' 

set @query='select replace(''1234EFGH'','''[email protected]+''','''[email protected]+''')' 

exec (@query)