insert into 테이블
select '2',   <--- column1 에 변경하고자 싶은 값을 넣어준다

  column2,

  column3,

  column4,

  column5,

  column6,

  column7

from 테이블 where CODE = '1'   <- 복사할 칼럼 조건을 넣어줌

SELECT * FROM NLS_DATABASE_PARAMETERS

WHERE PARAMETER = 'NLS_CHARACTERSET'

decode(raw,'%법','1','2') 디코드는 이렇게 안된다.

하지만 case when raw like '%법' then '1' else '2' 가능

그리고 then 결과 값 앞에 이어 붙이거나 공백을 넣고 싶을땐

하지만 case when raw like '%법' then ' '||'1' else '2' || 이걸로 가능하다

where 1=1 은 항상 참인 조건

 

사용하는 이유는?

 - 편의성을 위해서

 - where 절은 고정적으로 넣어두고, 상황에 따라 and 절만을 추가하기 위해

   의미없는 조건절(항상 참인)을 맨 앞에 넣어주는 것.

 

예를 들어,

성별, 나이, 국적으로 사용자를 검색해야 한다면.

아래와 같은 여러가지 케이스가 나온다.

 

String sql = "select * from 사용자" ;

 if(조건)        sql = sql + " where 성별='남성' " ;

 else if(조건) sql = sql + " where 나이='20살' " ;

 else if(조건) sql = sql + " where 국적='한국' " ;

 else if(조건) sql = sql + " where 성별='남성' and 나이='20살' " ;

 else if(조건) sql = sql + " where 성별='남성' and 국적='한국' " ;

 else if(조건) sql = sql + " where 국적='한국' and 나이='20살' " ;

 else if(조건) sql = sql + " where 성별='남성' and 나이='20' and 국적='한국' " ;

 else            sql = sql + "" ;

 

 

이 때, where 1=1을 쿼리에 추가하면

조건문이 한결 간결해진다.

String sql = "select * from 사용자 where 1=1" ;

 if(조건) sql = sql + " and 성별='남성' " ;

 if(조건) sql = sql + " and 나이='20살' " ;

 if(조건) sql = sql + " and 국적='한국' " ;

[출처] [Oracle] where 1=1|작성자 치치포포

출처 : http://blog.naver.com/winter6120/220256057301

+ Recent posts