1. 기본문법
NUMBER 필드의 값이 1 인 레코드에 이름필드에 '최안규' ID 필드에 'CAK0280' 값을 넣어라. UPDATE 테이블명 set name='최안규',id='CAK0280' WHERE NUMBER=1 2. STUFF() , SUBSTRING() 을 이용한 업데이트 update 쿼리와 STUFF 함수와 SUBSTRING함수를 이용하는 방법을 알아보도록 하겠습니다..... 다음과 같은 경우가 있다고 가정을 해 보겠습니다. 테이블명 : TEST
위의 테이블처럼 TEST 테이블에 NUM 필드가 001001 처럼 되어 있습니다. 만약 두번째 값에서 부터 2개 문자가 '01' 로 되어 있는 값을 '00' 으로 일괄되게 수정하고 싶으시면 어떻게 하시겠습니다. 즉, 아래 구조처럼 바뀌게 되는겁니다. 테이블명 : TEST
FROM 문에 SUBQUERY 를 사용하고, STUFF 함수와 SUBSTRING함수를 이용하면 해결하실수 있습니다. 아래의 쿼리처럼 하시면 됩니다. UPDATE test SET num= STUFF(num,2,2,'01') where substring(num,2,2)='01' STUFF 함수는 특정위치의 값을 바꾸어 줄수 있습니다. STUFF(문자, 시작위치, 길이, 바꿀문자) NUM 필드에서 2번째 문자에서 2개를 가지고 와서 00으로 바꾸어 줍니다. WHERE 문에서 SUBSTRING(NUM,2,2)='01' 조건을 보면 아시겠지만, 01 값을 가지고 와서 특정위의 문자를 바꾸어 주면 됩니다. 3. 일괄 UPDATE
3. Replace() 함수를 이용한 일부분 업데이트 데이터 칼럼에 AAA 랑 문장이 있을 경우, 모두 BBB 로 수정을 하고 싶을 경우 Replace 함수를 이용할 수 있습니다. Update board set title=replace(title,'AAA','BBB') where 조건 위와 같은 형식으로 하시면 됩니다. 위의 테이블의 필드는 Varchar 형 일때만 가능합니다. Text , nText 형에서는 에러를 발생합니다. replace 함수의 1 인수에 대한 인수 데이터 형식 ntext이(가) 잘못되었습니다. 위와 같은 에러를 발생합니다. 이런경우 칼럼을 varchar 형으로 바꾼 후 이용하면 됩니다. Update board set content=replace(convert(varchar(8000),content),'AAA','BBB') where 조건 위와 같은 형식으로 convert 함수를 이용해서 형식을 바꾸어 줍니다. varchar 형으로 되어 있는 필드 , 데이터 값은 '2012-12-30 오전 12:00' 와 같은 형식으로 되어 있는 경우, Datetime 형으로 변환시키면 에러가 난다. 이럴경우 '2012-12-30 12:00' 같은 형태로 바꾸어서 디비 마이그레이션을 해야 한다. 이런경우 substring을 이용하면 되는데, 쿼리는 아래와 같다. writeday (varchar) --> writeday1 (datetime) 으로 변환시킨다. update areum_board1 set writeday1=dateadd(mm,1,substring(writeday,1,10) + substring(writeday,14,9) + case substring(writeday,12,2) when '오전' then 'AM' else 'PM' end)
|
|||||||||||||||||||||||||||||||||||