함수는 Function이다보니 F라는 기호로 표현한다.
함수는 전달된 값을 받아서 특수한 임무를 수행을 하고 그 결과를 반환해준다.
F(x)
F = 계산식, 전달받은 값을 계산, 특정한 임무 수행, 임무 완료 후 결과 반환
(x) = 인자(또는 매개변수, PARAMETER)
f(x1) -> 인자 하나
f(x1,x2) -> 인자 둘
f(x1,x2,x3) ->인자 셋
라는식으로 보면된다.
숫자함수에는 Round함수가 있다.
round함수는 인자가 3개이다.
ROUND(x1,x2,[x3])
로 표현이 되며,
x1 인자는 반올림을 처리할 대상숫자가 된다.
x2 반올림한다는것은 소수점 몇번째부터 반올림해줄거야 라는것이다. x2는 경우에 따라서 생략해도 무관하긴 하다.
x3은 크게 신경안써도된다. 필요에 따라서는 입력하지 않아도된다.
SELECT [ProductID],[Name],[ListPrice] FROM [Production].[Product]
[Production].[Product]테이블의 [ProductID],[Name],[ListPrice]을 봐보자
사진에는 짤렸지만 총 504개의 데이터값이 있다. 너무많으니 일단 ListPrice값이 0보다 큰애들만 확인해보자
SELECT [ProductID],[Name],[ListPrice] FROM [Production].[Product] WHERE [ListPrice]>0
304개로 결과값이 줄어든것을 확인할수있다. ListPrice값은 소수점 2자리까지 나오기때문에 이를 Round함수를 통해 깔끔하게 봐보자
SELECT [ProductID],[Name],ROUND(ListPrice,1) FROM [Production].[Product] WHERE [ListPrice]>0
ListPrice를 첫번째 소수점자리까지 반올림하겠다 명령하자
로 결과값이 나온것을 확인할수있다. 소수점자체를 없애고싶으면 0 을 사용해서 없앨수있다.
SELECT [ProductID],[Name],ROUND(ListPrice,0) FROM [Production].[Product] WHERE [ListPrice]>0
다음으로 RAND()함수는 난수를 발생시킨다.
0과 1사이의값을 뽑아서 숫자를 랜덤으로 결과를 보여주는함수이다. rand함수는 전달되는 인자가 하나도 없다.
함수는 인자를 받아서 특수한 임무를 수행할순 있지만, 인자를 받지않아도 임무를 수행할수 있다.
rand함수는 인자없이도 사용이 가능하다.
SELECT RAND()
사용하게되면
등등 랜덤으로 나오는것을 볼수있다. 여기서 AS를 집어넣게되면 결과값에 (열 이름 없음)이 아니라 이름을 넣어주게된다.
SELECT RAND() AS RND
변동된것을 확인해볼수있다.
rand함수는 1이상이 안나오지만 1이상의 결과값을 보고싶으면 rand()*100 같은형식으로 소수점을 정수로 끌어올리는 형식으로 사용이 가능하다.
SELECT RAND()*100 AS RND
정수가 나오는것을 확인해볼수있다. 마찬가지로 정수로나오게하고 소수점은 싹없애고싶으면 앞서 설명한 ROUND함수를 이용해서 없애면 된다.
SELECT ROUND(RAND()*100,0) AS NUMBER
round함수에서 0을 사용하게되면 소수점을 없애기때문에 정수만 확인해볼수있다.
문자함수중엔 문자길이를 조정해주는 함수 LEFT,RUGHT가 있다.
LEFT(x1,x2)는 왼쪽부터 조절할것이다.
RIGHT(x1,x2)는 오른쪽부터 조절할것이다.
LEFT와 RIGHT함수 모두 인자가 무조건 2개들어가야하며
x1은 동일하게 어떤문자열의 길이를 조정할지 정해주는 대상문자이다.
x2는 왼쪽부터 혹은 오른쪽부터 몇번째자리까지 조정해줄거야 라는 것이다.
SELECT*FROM [Sales].[Customer]
[Sales].[Customer]테이블을 통해 알아보자
SELECT [ModifiedDate] FROM [Sales].[Customer]
열 [ModifiedDate] 만 확인해보면
가 나오는것을 볼수있다. 이를 왼쪽으로 먼저 정렬해보자
SELECT [ModifiedDate], LEFT([ModifiedDate],10) AS D_DATE FROM [Sales].[Customer]
[ModifiedDate]안의 데이터를 왼쪽부터 10자리까지만 정리해달라는뜻이되며 AS D_DATE를 통해 열에 이름을 넣어준다.
결과로는
왼쪽부터 2014-09-12로 총 10자리를 뽑아 보여주는것을 볼수있다. 오른쪽정렬도 한번봐보자
SELECT [ModifiedDate], LEFT([ModifiedDate],10) AS D_DATE,
RIGHT([ModifiedDate],12) AS D_TIME FROM [Sales].[Customer]
오른쪽부터 12개를세서 시간만 따로 나오는것을 볼수있다.
'Sql' 카테고리의 다른 글
Sql - 4 특수연산자 (0) | 2023.08.22 |
---|---|
Sql - 3 비교연산자,논리연산자 (0) | 2023.08.21 |
Sql - 2 (0) | 2023.08.18 |
Sql - 1.5 (0) | 2023.08.18 |
SQL -1 (0) | 2023.08.18 |