일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Lock
- 초대장
- 토렌트
- 국정화 반대
- 국정화
- 재테크
- 박근혜 탄핵
- jquery
- db
- 트레커
- 파리바게트
- 함수
- 내장함수
- 카카오가 찾아준 헤어샵
- 최신트래커
- 트래커
- .net
- 티스토리
- javascript
- 하남맛집
- 동적쿼리
- 하남
- 카카오헤어샵
- 맛집
- Google Map
- 술안주
- MSsql
- 신장사거리
- 파리바게트 청라 SK점
- C#
- Today
- Total
featur
[MSSQL] 내장함수 (스칼라 함수) 본문
[MSSQL] 내장함수 (스칼라 함수)
SQL Server는 많은 기본 제공 함수를 포함하고 있다.
기본 제공 함수는 크게 행 집합 함수, 집계 함수, 순위 함수, 스칼라 함수로 분류할 수 있다.
그 중, 스칼라 함수란 단일 값에 적용이 되어서 단일 값의 결과를 돌려주는 함수를 말한다.
SQL Server에서 제공하는 기본 제공 스칼라 함수의 종류는 구성 함수, 변환 함수, 커서 함수, 날짜 및 시간 함수, 논리 함수, 수치 연산 함수, 메타 데이터 함수, 보안 함수, 문자열 함수, 시스템 함수, 시스템 통계 함수, 텍스트 및 이미지 함수 등으로 나눠진다.
그 중에서 자주 사용되는 것을 소개하겠다. 각각 소개된 함수의 <예> 부분을 직접 쿼리 창에서 실행해 보기 바란다. 그러면 더 빨리 이해될 것이다.
① 구성 함수 : 현재 구성에 대한 정보를 알 수 있다.
@@LANGID @@LANGUAGE | 현재 설정된 언어의 코드 번호 및 언어를 확인할 수 있다. <예> SELECT @@LANGID ; 한국어의 경우에는 29가 출력된다. 다른 언어의 ID는 sp_helplanguage 저장 프로시저를 실행하면 확인할 수 있다. |
@@SERVERNAME | 현재 인스턴스의 이름을 확인할 수 있다. <예> SELECT @@SERVERNAME ; |
@@SERVICENAME | 서비스의 이름을 돌려준다. <예> SELECT @@SERVICENAME ; 기본 인스턴스인 경우에는 'MSSQLSERVER'를, 명명된 인스턴스의 경우에는 설치할 때 지정한 인스턴스 이름을 돌려준다. |
@@SPID | 현재 사용자 프로세스의 세션 ID를 반환. <예> SELECT @@SPID AS 'ID', SYSTEM_USER AS [로그인사용자], USER AS [사용자] ; 현재 세션 ID 번호, 로그인 사용자, 사용자를 돌려준다. |
@@VERSION | 현재 설치된 SQL Server의 버전, CPU 종류, 운영체제 버전의 정보를 알려준다. <예> SELECT @@VERSION ; |
② 날짜 및 시간 함수 : 날짜 및 시간 입력 값에 대한 함수
SYSDATETIME() GETDATE() | 현재의 날짜와 시간을 돌려준다. <예> SELECT SYSDATETIME (), GETDATE () ; |
DATEADD() | 날짜에 더한 결과를 돌려준다. <예> SELECT DATEADD (day, 100, '2014/10/10') ; 2014년 10월 10일부터 100일 후의 날짜를 돌려준다. day 대신에 year, month, week, hour, minute, second 등이 올 수 있다. |
DATEDIFF() | 두 날짜의 차이를 돌려준다. <예> SELECT DATEDIFF (week, GETDATE(), '2022/10/19') ; 현재부터 2022년 10월 19일까지 남은 주를 알려준다. |
DATENAME() | 날짜의 지정한 부분만 돌려준다. <예> SELECT DATENAME (weekday, '2022/10/19') ; 2022년 10월 19일이 무슨 요일인지 알려준다. |
DATEPART() | 지정된 날짜의 년 또는 월 또는 일을 돌려준다. <예> SELECT DATEPART (year, GETDATE()) ; 현재 년도를 돌려준다. |
DAY() MONTH() YEAR() | 지정된 날짜의 일/월/년을 돌려준다 <예> SELECT MONTH ('2022/10/19') ; 2022년 10월 19일의 월인 10을 돌려준다. |
DATEFROMPARTS() DATETIME2FROMPARTS() DATETIMEFROMPARTS() DATETIMEOFFSETFROMPARTS() SMALLDATETIMEFROMPARTS() TIMEFROMPARTS() | SQL Server 2012부터 제공하는 함수들로, 문자열을 각각 입력하면 해당하는 데이터형식의 값을 반환한다. 예를 들어, DATEFROMPARTS()는 연, 월, 일을 입력하면 Date 값을 반환한다. <예> SELECT DATEFROMPARTS ('2022', '10', '19') ; '2022-10-19'을 돌려준다 |
EOMONTH() | SQL Server 2012부터 제공하는 함수로, 입력한 날짜에 포함된 달의 마지막 날을 돌려준다. <예> SELECT EOMONTH ('2015-3-3') ; 2015년 3월의 마지막 날짜를 돌려준다. <예> SELECT EOMONTH (GETDATE (), 3) ; 오늘 날짜에서 3개월 후의 마지막 날짜를 돌려준다. |
③ 수치 연산 함수
ABS() | 수식의 절대값을 돌려준다.. <예> SELECT ABS (-100) ; 절대값인 100을 돌려준다. |
ROUND() | 자릿수를 올려서 돌려준다. <예> SELECT ROUND (1234.5678, 2), ROUND (1234.5678, -2) ; 1234.5700과 1200.0000을 돌려준다. |
RAND() | 0~1까지의 임의의 숫자를 돌려준다. <예> SELECT RAND () ; |
SQRT() | 제곱근 값을 돌려준다. <예> SELECT SQRT (10) ; 10의 제곱근인 약 3.16을 돌려준다. |
POWER() | 거듭제곱 값을 돌려준다. <예> SELECT POWER (3,2) ; 3의 2제곱근인 9를 돌려준다. |
이 외에도 DEGREES, ACOS, EXP, ASIN, FLOOR, SIGN, ATAN, LOG, SIN, ATN2, LOG10, CEILING, PI, SQUARE, COS, TAN, COT, RADIANS 등이 있다.
④ 메타 데이터 함수 : 데이터베이스 및 데이터베이스 개체의 정보를 반환한다.
COL_LENGTH() | 테이블 컬럼의 길이를 돌려준다. <예> USE sqlDB ; SELECT COL_LENGTH ('userTbl', 'name') ; nvarchar 형이나 nchar 형은 지정한 것보다 2배의 크기가 나온다. |
DB_ID() DB_NAME() | DB의 ID 또는 DB의 이름을 돌려준다. <예> SELECT DB_ID (N'AdventureWorks') ; SELECT DB_NAME (5) ; DB_ID()는 AdventureWorks DB의 id 번호인 5를 돌려주고, DB_NAME()은 5번 DB의 이름인 AdventureWorks를 돌려준다 (이건 필자의 경우임). |
OBJECT_ID() OBJECT_NAME() | Object의 ID 또는 Object의 이름을 돌려준다. <예> SELECT OBJECT_ID (N'sqlDB.dbo.userTbl') ; SELECT OBJECT_NAME (245575913) ; OBJECT_ID()는 개체의 ID를 돌려주고, OBJECT_NAME()은 개체 이름을 돌려준다. |
⑤ 논리 함수 : 논리 연산을 수행한다.
CHOOSE() | SQL Server2012 부터 제공하는 함수다. 여러 값 중에서 지정된 위치의 값을 반환한다. <예> SELECT CHOOSE ( 2, 'SQL', 'Server', '2012', 'DVD') ; 2번째 문자열인 'Server' 를 돌려준다. |
IIF() | SQL Server2012 부터 제공하는 함수다. 파라미터로 수식, 참일 때, 거짓일 때 3개가 사용된다. <예> SELECT IIF ( 100 > 200, '맞다', '틀리다') ; 수식이 거짓이므로 '틀리다'를 돌려준다. |
⑥ 문자열 함수 : 문자열을 조작한다. 활용도가 높으므로 잘 알아두도록 한다.
ASCII() CHAR() | 문자의 아스키 코드값을 돌려주거나 아스키 코드값의 문자를 돌려준다 (0~255 범위). <예> SELECT ASCII ('A'), CHAR (65) ; 65와 'A'를 돌려준다. |
CONCAT() | SQL Server2012 부터 제공되는 함수로, 둘 이상의 문자열을 연결한다. 이전 버전에서는 대신 '+' 로 문자열을 연결하면 된다. <예> SELECT CONCAT ('SQL', 'SERVER', 2012) 또는 SELECT 'SQL' + 'SERVER' + '2012' ; 'SQL SERVER 2012' 를 돌려준다. |
UNICODE() NCHAR() | 문자의 유니코드값을 돌려주거나 유니코드값의 문자를 돌려준다 (0~63365 범위). <예> SELECT UNICODE ('가'), NCHAR (44032) ; 44032와 '가'를 돌려준다. |
CHARINDEX() | 문자열의 시작 위치를 돌려준다. <예> SELECT CHARINDEX ('Server', 'SQL Server 2012') ; 'SQL Server 2012'에서 'Server'가 시작되는 위치인 5를 돌려준다. |
LEFT() RIGHT() | 왼쪽/오른쪽/지정 위치부터 지정한 수만큼 돌려준다. <예> SELECT LEFT ('SQL Server 2012', 3) , RIGHT ('SQL Server 2012', 4) ; 'SQL Server 2012'에서 왼쪽의 세 글자 'SQL'과 오른쪽 네 글자 '2012'를 돌려준다. |
SUBSTRING() | 지정한 위치부터 지정한 개수의 문자를 돌려준다. <예> SELECT SUBSTRING (N'대한민국화이팅', 3, 2) ; '대한민국화이팅'에서 3번째부터 두 글자인 '민국'을 돌려준다. |
LEN() | 문자열의 길이를 돌려준다. <예> SELECT LEN ('SQL Server 2012') ; 'SQL Server 2012'의 글자수 15를 돌려준다. |
LOWER() UPPER() | 소문자를 대문자로, 대문자를 소문자로 변경한다. <예> SELECT LOWER ('abcdEFGH'), UPPER ('abcdEFGH') ; 'abcdefgh'와 'ABCDEFGH'를 돌려준다. |
LTRIM() RTRIM() | 왼쪽 공백문자 및 오른쪽 공백문자를 제거해 준다. <예> SELECT LTRIM (' 공백앞뒤두개 '), RTRIM (' 공백앞뒤두개 ') ; '공백앞뒤두개'와 '공백앞뒤두개'를 돌려준다. |
REPLACE() | 문자열의 내용을 지정한 것으로 찾아서 바꾼다. <예> SELECT REPLACE ('SQL Server 2012', 'Server', '서버') ; 'SQL Server 2012'에서 'Server'를 찾아서 '서버'로 바꾼다. |
REPLICATE() | 문자열을 지정한 수만큼 반복한다. <예> SELECT REPLICATE ('SQL', 5) ; 'SQL'을 5번 반복하여 돌려준다. |
REVERSE() | 문자열의 순서를 거꾸로 만든다. <예> SELECT REVERSE ('SQL Server 2012') ; '2012 revreS LQS'를 돌려준다. |
SPACE() | 공백을 지정한 수만큼 반복한다. <예> SELECT SPACE (5) ; ' ' (공백 5개)를 돌려준다. |
STR() | 숫자를 문자로 변환한다 (CAST나 CONVERT를 대신 사용 권장). |
STUFF() | 문자를 지정한 위치의 개수만큼 삭제한 후에, 새로운 문자를 끼워 넣는다. <예> SELECT STUFF ('SQL 서버 2012', 5, 2, 'Server') 'SQL 서버 2012'의 5번째부터 2글자 ('서버') 를 삭제한 후에 'Server'를 끼워넣는다. |
FORMAT() | SQL Server 2012부터 제공되는 함수로, 지정된 형식으로 출력한다. 표준 형식은 FORMAT(value, format)을 갖는데, value는 출력할 값이고, format은 출력할 형식이다. <예> SELECT FORMAT ( GETDATE() , 'dd/MM/yyyy' ) ; 현재 날짜의 '일-월-연도'를 돌려준다. |
'개발 > MSSQL' 카테고리의 다른 글
[MSSQL] IIF (SQL Server 2012 이상) (0) | 2016.12.19 |
---|---|
[MSSQL] FORMAT (Sql Server 2012 이상) (0) | 2016.12.19 |
[MSSQL] 날짜 형식 ( 포맷 ) 변환 (0) | 2016.12.16 |
[MSSQL] 날짜 형식의 종류 (0) | 2016.12.16 |
[MSSQL] 자주쓰는 함수 (0) | 2016.12.15 |