SQL에서 바꾸기 사용


13

나는 테이블을 가지고 있고 일부 이름을 업데이트해야하지만

다음과 같은 쿼리 :

둘 다 똑같이할까요?

Query1

Update mytable
Set Name = Replace(Name,'Jeff','Joe')

Query2

Update mytable
Set Name = 'Joe'
where Name = 'Jeff'

답변:


11

아니요, 동일하지 않습니다.

첫 번째 쿼리는 전체 문자열 내에서 문자열을 찾습니다 ( replace () " 지정된 문자열 값의 모든 항목을 다른 문자열 값으로 바꿉니다 " 참조 ). 두 번째 쿼리는 정확한 문자열을 찾습니다.

와 같은 레코드가있는 경우 JeffJoe첫 번째 쿼리는을 제공 JoeJoe하고 두 번째 쿼리는 JeffJoe수정없이 제공합니다.


25

아니요, 그들은 같은 일을하지 않을 것입니다.

  1. SQL 엔진에 필요한 노력의 양은 완전히 다릅니다. 첫 번째 쿼리에서 엔진은 모든 행을 통과하고 이름 열에서 문자열 바꾸기 작업을 수행해야합니다. 두 번째 쿼리에서는 이름이 "Jeff"인 테이블을 검색하고 이름 열을 Joe로 업데이트합니다.

  2. 문자열 교체는 와일드 카드입니다. 따라서 첫 번째 쿼리에서 "Jeffrey"라는 이름은 "Joerey"가됩니다.


3
포인트 2가 더 중요한 것 같습니다. 그것이 옳은 일을하지 않으면 성능은 관련이 없습니다.
Martin Smith

아마 맞을지 모르지만 실제로 업데이트의 비즈니스 목표가 무엇인지 알지 못합니다. 나는 분석 순서를 반대로 바꿔야했지만 두 가지 결함을 언급하는 것이 올바른 것이라고 생각합니다. 염두에 두어야 할 한 가지는 OP가 우리를 위해 단순화했지만 세부 정보를 생략 한 것입니다. "이름"에는 실제로 이름이 아닌 전체 이름이 포함되어 있습니다.
Jonathan Fite
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.