본문 바로가기

프로그래밍&IT/SQL Server (MS-SQL)

[MS SQL SERVER 2012 학습] 스칼라 함수 (2)

MS SQL SERVER 2012 에서 제공하는 구성, 날짜, 시간, 수치연산 기본 스칼라 함수에 이어서...

[MS SQL SERVER 2012 학습] 스칼라 함수 (1) - 구성, 날짜, 시간, 수치연산 포스팅보기.


SQL SERVER 2008 버전과 중복된 내용이 있으며

그리고 아래에 서술한 함수 외에도 더 많은 함수들이 존재합니다.



[메타 데이터 함수]

* 데이터베이스 및 데이터베이스 개체의 정보 반환

- COL_LENGTH() : 테이블 컬럼의 길이를 리턴    ex) select COL_LENGTH('dbo.Nums', 'n') -- dbo.Nums 테이블의 'n'컬럼 조회

- DB_ID() / DB_NAME() : DB의 id, name 리턴    ex) select DB_ID(), DB_NAME()

- OBJECT_ID(), OBJECT_NAME() : ex) select OBJECT_ID(N'dbo.Nums') , OBJECT_NAME(901578250)    -- 901578250  , Nums 반환

테이블 등의 object의 id값 / id값으로 해당 object의 이름을 얻어오는


[논리 함수]

*** MS SQL SERVER 2012부터 제공되는 함수들 ***

- CHOOSE() : 여러 값 중 지정된 위치의 값 반환    ex) SELECT CHOOSE(2, 'A', 'B', 'C')    -- B
- IIF() : 파라미터로 수식. 참일때, 거짓일때 3개 사용    ex) select IIF( 1 > 2, 'T', 'F')    --  F

[논리 함수]

- ASCII() / CHAR() : 문자의 아스키코드값 리턴하거나 아스키코드값의 문자 리턴    ex) select ASCII('A'), CHAR(65) -- 65  , A

- UNICODE() / NCHAR() : 문자의 유니코드값 리턴하거나 유니코드값의 문자 리턴 (0~63365 범위)

ex) SELECT UNICODE('하'), NCHAR(54616) -- 54616 |    하

- CHARINDEX() : 문자열의 시작 위치 리턴    ex) SELECT CHARINDEX('ABC', 'ZZABCDDD') -- 3

- LEFT() / RIGHT() : 왼쪽/오른쪽에서 지정한 수만큼 리턴    ex) SELECT LEFT('ABCDEFG', 3), RIGHT('ABCDEFG', 2)    -- ABC FG

- SUBSTRING() : 지정한 위치부터 지정한 개수의 문자 리턴    ex) SELECT SUBSTRING(N'가나다라마바사', 3, 2) -- 다라

- LEN() : 문자열의 길이 리턴

- LOWER() / UPPER() : 소문자 <--> 대문자 변환    ex) select LOWER('ABCdef'), UPPER('ABCdef')    -- abcdef ABCDEF

- LTRIM() / RTRIM() : 왼쪽 / 오른쪽 공북문자 제거    ex) select LTRIM('   ABC   '), RTRIM('   ABC   ') -- ABC     ABC

TRIM()을 왜 제공안하는지는 모르겠지만

- REPLACE() : 문자열의 내용을 지정한 것으로 교체    ex) SELECT REPLACE('ABCDEF', 'AB', 'ZZ') -- ZZCDEF

- REPLICATE() : 문자열을 지정한 수만큼 반복    ex) select REPLICATE('A', 3) -- AAA

- REVERSE() : 문자열의 순서를 거꾸로 만든다    ex) select REVERSE('ABC')    -- CBA

- SPACE() : 공백을 지정한 수만큼 반복    ex) select SPACE(3)

- STR() : 숫자를 문자로 변환. CAST, CONVERT를 대신 사용을 권장한다고    ex) select STR(5)

- STUFF() : 문자를 지정한 위치의 개수만큼 삭제후 새로운 문자를 끼워넣는다    ex) select STUFF('ABCDEFG', 3, 2, 'ZZZ') -- ABZZZEFG


*** MS SQL SERVER 2012부터 제공되는 함수들 ***

- CONCAT() : 둘 이상의 문자열 연결    ex) select CONCAT('ABC', 'DEF', '1234') -- ABCDEF1234

- FORMAT() : 지정된 형식으로 출력    ex) SELECT FORMAT(GETDATE(), 'dd/MM/yyyy')    -- 18-01-2016

년/월/일 날짜형식을 간혹 월/일/년 형식으로 바꾼다던지 할때 유용할듯