my sql 함수 - 김연홍님 강좌 MySQL
- 산술적 연산함수
-- CEILING(절상) , FLOOR(절삭)
SELECT CEILING(27.4), FLOOR(27.6)
----- -----
28 27
SELECT RAND() -- 0에서 1사이의
SELECT RAND() * 100 --: 0~100사이의 임의의 값을 리턴
SELECT RAND() * 99 + 1 -- : 1에서 100사이의 임의의 값을 리턴
SELECT CONVERT(TINYINT, RAND() * 99 + 101) -- : 101~200사이의 임의의 값(정수)을 리턴
SELECT ROUND(27.3, 0), ROUND(27.7, 0), ROUND(27.283, 1)
----- ----- -------
27.0 28.0 27.300
-- 문자함수
SELECT LEFT('ABCDE', 3) AS [LEFT], RIGHT('ABCDE', 3) AS [RIGHT], SUBSTRING('ABCDE', 2, 3) AS [SUBSTRING]
LEFT RIGHT SUBSTRING
----- ----- ---------
ABC CDE BCD
SELECT LEFT(LTRIM(' ABCDE'), 3) AS [LEFT], RIGHT(RTRIM('ABCDE '), 3) AS [RIGHT]
LEFT RIGHT
------ ------
ABC CDE
SELECT CHARINDEX('C', 'ABCDE')
-------
3
-- 성을 리턴할 때 유용
SELECT LEFT('홍 길동', CHARINDEX(' ', '홍 길동') - 1) AS [familyName]
-------
홍
SELECT LEFT('남궁 길동', CHARINDEX(' ', '남궁 길동') - 1) AS [familyName]
-------
남궁
-- 이름을 리턴할 때 유용
SELECT SUBSTRING('홍 길동', CHARINDEX(' ', '홍 길동') + 1, LEN('홍 길동')) AS [FirstName]
-------
길동
space(10) 10칸만큼 띄우라는 함수
SELECT 'ABC' + SPACE(10) + 'DEF'
----------------
ABC DEF
--날짜함수
SELECT DATEADD(DD, 10, GETDATE())
SELECT DATEADD(MM, 10, GETDATE())
SELECT DATEADD(YY, 10, GETDATE())
SELECT DATEADD(WW, 10, GETDATE())
-- 기준일 부터 오늘까지의 차이(DD-일, MM-월, YY-년도, WW-주일 수를 반환)
SELECT DATEDIFF(DD, ‘20050101’, GETDATE())
SELECT DATEDIFF(MM, ‘20050101’, GETDATE())
SELECT DATEDIFF(YY, ‘20050101’, GETDATE())
SELECT DATEDIFF(WW, ‘20050101’, GETDATE())
-- 오늘날짜를 기준으로 ㅇㅇ이 지났는지를 리턴
SELECT DATEPART(DD, GETDATE()) -- 해당월의 일수를 리턴
SELECT DATEPART(MM, GETDATE()) -- 해당월의 월수를 리턴
SELECT DATEPART(YY, GETDATE()) -- 해당년도를 리턴
SELECT DATEPART(WW, GETDATE()) -- 해당 주(week)를 리턴
SELECT DATEPART(DY, GETDATE()) -- 365일중 지난 일수를 리턴
SELECT DAY(GETDATE()) -- 해당 일을 반환
SELECT MONTH(GETDATE()) -- 해당 월을 반환
SELECT YEAR(GETDATE()) -- 해당 년도수를 반환
-- 18개의 행을 리턴
SELECT COUNT(*) FROM titles
-- 집계함수에서는 null값을 가진 칼럼은 제외한다. (주의)
SELECT COUNT(price) FROM titles
SELECT CONVERT(INT, 12345.7)
SELECT CAST('12345' AS INT) -- AS 앞에 (,)를 찍지 않는다.
-- 날짜 형식이 옳은지의 판단
SELECT ISDATE('20050229') -- 0을 리턴하면 날짜형식이 맞지 않다.
SELECT ISDATE('20040229') -- 1을 리턴하면 날짜가 맞다. 200402월은 윤달이다.
SELECT ISNULL(price, 0) FROM titles
SELECT ISNULL(CONVERT(VARCHAR(10), price), '가격미정') FROM titles
SELECT ISNUMERIC('12345.77') -- 1(true)을 리턴
SELECT ISNUMERIC('AAAA') -- 0(false)을 리턴
SELECT ISNUMERIC('12X45') -- 0(false)을 리턴
SELECT NULLIF('AAA', 'ABC') -- 'AAA'를 리턴
SELECT NULLIF('AA', 'AA') -- NULL을 리턴
-- 보안함수
SELECT SUSER_SNAME(), SUSER_SID(), USER_NAME()
-- 행집합 함수(분산환경에서 사용)
OPENQUERY, OPENROWSET
[출처] [펌] MSSQL함수 - 김연홍님 강좌|작성자 인디고