SQL
함수 (스칼라 / 단일 행)
수색…
소개
SQL은 몇 가지 기본 제공 스. 라 함수를 제공합니다. 각 스. 라 함수는 하나의 값을 입력으로 취하고 결과 세트의 각 행에 대해 하나의 값을 출력으로 리턴합니다.
T-SQL 문에서 표현식이 허용되는 모든 곳에서 스칼라 함수를 사용합니다.
통사론
- CAST (expression AS data_type [(length)])
- 변환 (data_type [(길이)], 표현식 [, 스타일])
- PARSE (string_value AS data_type [USING culture])
- DATENAME (날짜 부분, 날짜)
- GETDATE ()
- DATEDIFF (datepart, startdate, enddate)
- DATEADD (날짜 부분, 숫자, 날짜)
- 선택 (색인, val_1, val_2 [, val_n])
- IIF (boolean_expression, true_value, false_value)
- 기호 (numeric_expression)
- POWER (float_expression, y)
비고
스칼라 또는 단일 행 함수는 전체 결과 집합에서 작동하는 집계 함수 와 달리 결과 집합에서 데이터의 각 행을 조작하는 데 사용됩니다.
스칼라 함수에는 10 가지 유형이 있습니다.
- 구성 함수는 현재 SQL 인스턴스의 구성에 대한 정보를 제공합니다.
- 변환 함수는 주어진 조작에 대해 데이터를 올바른 데이터 유형으로 변환합니다. 예를 들어 이러한 유형의 함수는 문자열을 날짜 또는 숫자로 변환하여 두 가지 유형을 비교할 수 있도록 정보를 다시 형식화 할 수 있습니다.
- 날짜 및 시간 함수는 날짜 및 시간 값이 들어있는 필드를 조작합니다. 숫자, 날짜 또는 문자열 값을 반환 할 수 있습니다. 예를 들어, 함수를 사용하여 요일이나 연도의 현재 요일을 검색하거나 날짜에서 해당 연도 만 검색 할 수 있습니다.
날짜 및 시간 함수에 의해 반환되는 값은 SQL 인스턴스를 실행하는 컴퓨터의 운영 체제에 대해 설정된 날짜 및 시간에 따라 달라집니다.
- 논리 연산자를 사용하여 연산을 수행하는 논리 함수. 조건 집합을 평가하고 단일 결과를 반환합니다.
- 수학 함수는 수식에 수학 연산 또는 계산을 수행합니다. 이 유형의 함수는 단일 숫자 값을 리턴합니다.
- 메타 데이터 함수는 이름 및 데이터베이스 객체와 같은 지정된 데이터베이스에 대한 정보를 검색합니다.
- 보안 기능은 데이터베이스 사용자 및 역할에 대한 정보와 같이 데이터베이스의 보안을 관리하는 데 사용할 수있는 정보를 제공합니다.
- 문자열 함수 는 문자열 값에 대한 연산을 수행하고 숫자 또는 문자열 값을 반환합니다.
문자열 함수를 사용하여 예를 들어 데이터 결합, 하위 문자열 추출, 문자열 비교 또는 문자열을 모두 대문자 또는 소문자로 변환 할 수 있습니다.
- 시스템 함수는 작업을 수행하고 현재 SQL 인스턴스에 대한 값, 객체 및 설정에 대한 정보를 반환합니다.
- 시스템 통계 함수는 현재 SQL 인스턴스에 대한 다양한 통계를 제공합니다 (예 : 시스템의 현재 성능 수준을 모니터링 할 수 있도록).
문자 수정
문자 수정 기능 에는 문자를 대문자 또는 소문자로 변환하거나, 숫자를 서식있는 숫자로 변환하거나, 문자 조작을 수행하는 기능이 있습니다.
lower(char)
함수는 주어진 문자 매개 변수를 소문자로 변환합니다.
SELECT customer_id, lower(customer_last_name) FROM customer;
"SMITH"에서 "smith"로 변경된 고객의 성을 반환합니다.
날짜와 시간
SQL에서는 날짜 및 시간 데이터 유형을 사용하여 달력 정보를 저장합니다. 이러한 데이터 유형에는 시간, 날짜, smalldatetime, datetime, datetime2 및 datetimeoffset이 포함됩니다. 각 데이터 유형에는 특정 형식이 있습니다.
데이터 형식 | 체재 |
---|---|
시각 | hh : mm : ss [.nnnnnnn] |
날짜 | YYYY-MM-DD |
smalldatetime | YYYY-MM-DDh : mm : ss |
날짜 시간 | YYYY-MM-DD hh : mm : ss [.nnn] |
datetime2 | YYYY-MM-DD hh : mm : ss [.nnnnnnn] |
datetimeoffset | YYYY-MM-DD hh : mm : ss [.nnnnnnn] [+/-] hh : mm |
DATENAME
함수는 날짜의 특정 부분의 이름 또는 값을 리턴합니다.
SELECT DATENAME (weekday,'2017-01-14') as Datename
데이터 이름 |
---|
토요일 |
GETDATE
함수를 사용하여 현재 SQL 인스턴스를 실행하는 컴퓨터의 현재 날짜와 시간을 결정합니다. 이 함수에는 시간대 차이가 없습니다.
SELECT GETDATE() as Systemdate
시스템 날짜 |
---|
2017-01-14 11 : 11 : 47.7230728 |
DATEDIFF
함수는 두 날짜의 차이점을 반환합니다.
구문에서 datepart는 차이를 계산하는 데 사용할 날짜 부분을 지정하는 매개 변수입니다. datepart는 년, 월, 주, 일,시, 분, 초 또는 밀리 초일 수 있습니다. startdate 매개 변수에서 시작 날짜를 지정하고 차이를 찾으려는 enddate 매개 변수에서 종료 날짜를 지정하십시오.
SELECT SalesOrderID, DATEDIFF(day, OrderDate, ShipDate)
AS 'Processing time'
FROM Sales.SalesOrderHeader
SalesOrderID | 처리 시간 |
---|---|
43659 | 7 |
43660 | 7 |
43661 | 7 |
43662 | 7 |
DATEADD
함수를 사용하여 특정 날짜의 일부에 간격을 추가 할 수 있습니다.
SELECT DATEADD (day, 20, '2017-01-14') AS Added20MoreDays
Added 20MoreDays |
---|
2017-02-03 00 : 00 : 00.000 |
구성 및 변환 기능
SQL에서 구성 함수의 예는 @@SERVERNAME
함수입니다. 이 함수는 SQL을 실행중인 로컬 서버의 이름을 제공합니다.
SELECT @@SERVERNAME AS 'Server'
섬기는 사람 |
---|
SQL064 |
SQL에서 대부분의 데이터 변환은 사용자의 개입없이 암묵적으로 발생합니다.
암시 적으로 완료 할 수없는 변환을 수행하려면 CAST
또는 CONVERT
기능을 사용할 수 있습니다.
CAST
함수 구문은 CONVERT
함수 구문보다 간단하지만 수행 할 수있는 기능이 제한되어 있습니다.
여기서는 CAST
및 CONVERT
함수를 사용하여 datetime 데이터 형식을 varchar
데이터 형식으로 변환합니다.
CAST
함수는 항상 기본 스타일 설정을 사용합니다. 예를 들어 YYYY-MM-DD 형식을 사용하여 날짜와 시간을 나타냅니다.
CONVERT
함수는 지정한 날짜 및 시간 스타일을 사용합니다. 이 경우 3은 날짜 형식 dd / mm / yy를 지정합니다.
USE AdventureWorks2012
GO
SELECT FirstName + ' ' + LastName + ' was hired on ' +
CAST(HireDate AS varchar(20)) AS 'Cast',
FirstName + ' ' + LastName + ' was hired on ' +
CONVERT(varchar, HireDate, 3) AS 'Convert'
FROM Person.Person AS p
JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
GO
캐스트 | 변하게 하다 |
---|---|
David Hamiltion은 2003 년 2 월 4 일에 고용되었습니다. | David Hamiltion은 04/02/03에 고용되었습니다. |
변환 함수의 또 다른 예는 PARSE
함수입니다. 이 함수는 문자열을 지정된 데이터 형식으로 변환합니다.
함수의 구문에서 변환해야하는 문자열, AS
키워드 및 필수 데이터 유형을 지정합니다. 선택적으로 문자열 값을 형식화해야하는 문화권을 지정할 수도 있습니다. 이것을 지정하지 않으면 세션의 언어가 사용됩니다.
문자열 값을 숫자, 날짜 또는 시간 형식으로 변환 할 수 없으면 오류가 발생합니다. 그런 다음 변환을 위해 CAST
또는 CONVERT
를 사용해야합니다.
SELECT PARSE('Monday, 13 August 2012' AS datetime2 USING 'en-US') AS 'Date in English'
영어로 된 날짜 |
---|
2012 년 8 월 13 일 00 : 00 : 00.0000000 |
논리적 및 수학 함수
SQL에는 CHOOSE
및 IIF
두 가지 논리 함수가 있습니다.
CHOOSE
함수는 목록의 위치를 기반으로 값 목록에서 항목을 반환합니다. 이 위치는 색인에 의해 지정됩니다.
구문에서 index 매개 변수는 항목을 지정하며 정수 또는 정수입니다. val_1 ... val_n 매개 변수는 값 목록을 식별합니다.
SELECT CHOOSE(2, 'Human Resources', 'Sales', 'Admin', 'Marketing' ) AS Result;
결과 |
---|
매상 |
이 예제에서는 CHOOSE
함수를 사용하여 부서 목록의 두 번째 항목을 반환합니다.
IIF
함수는 특정 조건에 따라 두 값 중 하나를 반환합니다. 조건이 true이면 true 값을 반환합니다. 그렇지 않으면 거짓 값을 반환합니다.
구문에서 boolean_expression 매개 변수는 부울 식을 지정합니다. true_value 매개 변수는 boolean_expression이 true로 평가 될 경우 반환되어야하는 값을 지정하고 false_value 매개 변수는 boolean_expression이 false로 평가 될 경우 반환되어야하는 값을 지정합니다.
SELECT BusinessEntityID, SalesYTD,
IIF(SalesYTD > 200000, 'Bonus', 'No Bonus') AS 'Bonus?'
FROM Sales.SalesPerson
GO
BusinessEntityID | SalesYTD | 보너스? |
---|---|---|
274 | 559697.5639 | 보너스 |
275 | 3763178.1787 | 보너스 |
285 | 172524.4512 | 보너스 없음 |
이 예제에서는 IIF 함수를 사용하여 두 값 중 하나를 반환합니다. 판매 인의 연간 판매액이 20만이 넘으면이 사람은 보너스를받을 수 있습니다. 200,000 미만의 값은 직원이 보너스를받을 자격이 없다는 것을 의미합니다.
SQL은 입력 값에 대한 계산을 수행하고 숫자 결과를 리턴하는 데 사용할 수있는 여러 가지 수학 함수를 포함합니다.
한 가지 예는 SIGN
함수입니다.이 함수는 표현식의 부호를 나타내는 값을 반환합니다. -1 값은 음수 표현을 나타내고 +1 값은 양수 표현을 나타내고 0은 0을 나타냅니다.
SELECT SIGN(-20) AS 'Sign'
기호 |
---|
-1 |
이 예에서 입력은 음수이므로 결과 창에 결과가 나열됩니다 -1.
또 다른 수학적 기능은 POWER
기능입니다. 이 함수는 지정된 출력으로 표현 된 식의 값을 제공합니다.
구문에서 float_expression 매개 변수는 표현식을 지정하고 y 매개 변수는 표현식을 발생시키려는 출력을 지정합니다.
SELECT POWER(50, 3) AS Result
결과 |
---|
125000 |