본문 바로가기

SQL/MySQL

김연홍님 강좌 MySQL

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함수 - 김연홍님 강좌|작성자 인디고