2011. 3. 21. 20:08

[MSSQL] WHERE 절에 CASE문 추가

CASE 1 :

WHERE ( CASE WHEN SJVOY1 = 'B' THEN CHLDAT
                      WHEN SJVOY1 = 'J' THEN ARIDAT
                                                 ELSE REGDAT END )
            = '2010-11-01';


CASE 2:

WHERE REGDAT
           = ( CASE WHEN VESCOD = 'DCA' THEN '2011-03-15'
                                                          ELSE '2011-03-16' END );


SJVOY1, VESCOD 의 값이 무엇인지에 따라서 조회되는 값 및 대상 필드 변경됨

'Database / Sql' 카테고리의 다른 글

[Oracle] JOIN UPDATE  (0) 2011.05.25
[Oracle] JOIN UPDATE (bypass_ujvc 힌트)  (0) 2011.05.25
[MSSQL] 날짜 함수  (0) 2010.11.30
[Oracle] 9i 이상에서 컬럼명 변경  (0) 2010.11.11
[MSSQL] 테이블 복사  (0) 2010.10.20
2009. 11. 23. 09:58

[MS-SQL] 함수 모음 및 사용법

1)  Ascii() - 문자열의 제일 왼쪽 문자의 아스키 코드 값을 반환(Integer)
예) SELECT Ascii('abcd')    결과 >> a의 아스키 코드값인 97 반환 

2) Char() - 정수 아스키 코드를 문자로 반환(Char)
예) SELECT Char(97)   결과 >> a 반환 

3) Charindex() - 문자열에서 지정한 식의 위치를 반환
예)  SELECT Charindex('b','abcde')      결과 >>  2
      SELECT Charindex('b','abcde',2)   
결과 >>  2
      SELECT Charindex('b','abcde',3)    
결과 >> 

       -- 인수값이 3개일때 마지막은 abcde 에서의 문자열 검색 시작위치를 말하며
            2
인경우는 bcde 라는 문자열에 대해서 검색
            3
인 경우는 cde 라는 문자열에 대해서 검색 하게 된다. 

4) Difference() - 두 문자식에 SUONDEX  값 간의 차이를 정수로 반환
예)  SELECT Difference('a','b') )  결과 >> 3

5) Left() - 문자열에서 왼쪽에서부터 지정한 수만큼의 문자를 반환
예)  SELECT Left('abced',3)       결과 >> 3 

6) Len() - 문자열의 길이 반환
예) SELECT Len('abced')         결과>>5 

7) Lower() - 대문자를 소문자로 반환
예) SELECT Lower('ABCDE')    결과 >> abcde 

8) Ltrim() - 문자열의 왼쪽 공백 제거
예)  SELECT Ltrim('   AB  CDE')    결과>> AB CDE 

9)Nchar()  - 지정한 정수 코드의 유니코드 문자 반환
예)  SELECT Nchar(20)       결과  >>    

10) Replace -  문자열에서 바꾸고 싶은 문자 다른 문자로 변환
예) SELECT Replace('abcde','a','1')    결과>>1bcde 

11) Replicate()  - 문자식을 지정한 횟수만큼 반복
예) SELECT Replicate('abc',3)              결과>> abcabcabc 

12) Reverse() - 문자열을 역순으로 출력
예)   SELECT Reverse('abcde')             결과>> edcba 

13) Right()  - 문자열의 오른쪽에서 부터 지정한 수 만큼 반환(Left() 와 비슷 )
예) SELECT Right('abcde',3)                 결과>> cde 

14)Rtrim()  - 문자열의 오른쪽 공백 제거
예) SELECT Rtrim(' ab cde  ')               결과>>  ' ab cde'  <-- 공백구분을위해 ' 표시 

15)  Space()  -  지정한 수만큼의 공백 문자 반환
예)  SELECT Space(10)                  결과 >>  '         '   -- 그냥 공백이 나옴
     
확인을 위해서  SELECT 'S'+Space(10)+'E'   결과 >> S        E    

16) Substring()  -  문자,이진,텍스트 또는 이미지 식의 일부를 반환
예) SELECT Substring('abcde',2,3)      결과>>  bcd 

17)Unicode() - 식에 있는 첫번째 문자의 유니코드 정수 값을 반환
예)SELECT Unicode('abcde')              결과 >> 97 

18)Upper() - 소문자를 대문자로 반환
예) SELECT Upper('abcde')              결과>> ABCDE 

19) Isnumeric - 해당 문자열이 숫자형이면 1 아니면 0을 반환 >> 숫자 : 1  , 숫자X :0
예) SELECT Isnumeric('30')       결과 >> 1
     SELECT Isnumeric('3z')        결과 >> 0
 

20) Isdate()  - 해당 문자열이 Datetime이면 1 아니면 0
>> 날짜 : 1   , 날짜 X :0
예) SELECT Isdate('20071231')    결과 >> 1
     SELECT Isdate(getdate())      결과 >> 1

     SELECT Isdate('2007123')      결과
>> 0
     SELECT Isdate('aa')              결과 >> 0
 

※ 날짜및 시간함수 정리 

getdate()  >> 오늘 날짜를 반환(datetime) 
1> DateAdd()   - 지정한 날짜에 일정 간격을 + 새 일정을 반환

예) SELECT Dateadd(s,2000,getdate())  
2> Datediff()  - 지정한 두 날짜의 간의 겹치는 날짜 및 시간 범위 반환

예)SELECT DateDiff(d,getdate(),(getdate()+31)) 
3> Datename() -지정한 날짜에 특정 날짜부분을 나타내는 문자열을 반환

예) SELECT Datename(d,getdate()) 
4> Datepart() -지정한 날짜에 특정 날짜부분을 나타내는 정수를  반환

예) SELECT Datepart(d,getdate()) 
>> Datename , Datepart 은 결과 값은 같으나 반환 값의 타입이 틀림.
 

5> Day() -지정한 날짜에 일 부분을 나타내는 정수를  반환
예) SELECT Day(getdate())       -- 일 반환
     SELECT Month(getdate())   -- 월 반환
      SELECT Year(getdate())       --  년 반환
 

6> Getutcdate() -현재 UTC 시간을 나타내는 datetime 값을 반환
예) SELECT Getutcdate()