ODBC 스칼라 함수(Transact-SQL)
Transact-SQL 문에서 ODBC 스칼라 함수(ODBC Scalar Functions)를 사용할 수 있습니다. 이러한 문은 SQL Server에서 해석되고, 저장 프로시저 및 사용자 정의 함수에 사용될 수 있습니다. 여기에는 문자열, 숫자, 시간, 날짜, 간격, 시스템 함수가 포함됩니다.
용도
SELECT {fn <function_name> [ (<argument>,....n) ] }
함수
다음 표에는 Transact-SQL에서 중복되지 않은 ODBC 스칼라 함수가 나와 있습니다.
문자열 함수
함수 |
설명 |
---|---|
BIT_LENGTH( string_exp ) (ODBC 3.0) |
문자열 식의 길이(비트)를 반환합니다. 문자열 데이터 형식에서는 적용되지 않습니다. 따라서 암시적으로 string_exp를 문자열로 변환하지 않고 지정된 데이터 형식의 내부 크기를 반환합니다. |
CONCAT( string_exp1,string_exp2) (ODBC 1.0) |
string_exp2와 string_exp1의 연결 결과인 문자열을 반환합니다. 결과 문자열은 DBMS에 종속됩니다. 예를 들어 string_exp1로 표시되는 열이 NULL 값을 포함할 경우 DB2는 NULL을 반환하지만 SQL Server는 NULL이 아닌 문자열을 반환합니다. |
OCTET_LENGTH( string_exp ) (ODBC 3.0) |
문자열 식의 길이(바이트)를 반환합니다. 결과는 비트 수를 8로 나눈 값보다 큰 수 중 가장 작은 정수입니다. 문자열 데이터 형식에서는 적용되지 않습니다. 따라서 암시적으로 string_exp를 문자열로 변환하지 않고 지정된 데이터 형식의 내부 크기를 반환합니다. |
숫자 함수
함수 |
설명 |
---|---|
TRUNCATE( numeric_exp, integer_exp) (ODBC 2.0) |
소수점 이하 integer_exp 위치로 잘린 numeric_exp를 반환합니다. integer_exp가 음수일 경우 numeric_exp는 소수점 앞 |integer_exp| 위치로 잘립니다. |
시간, 날짜 및 간격 함수
함수 |
설명 |
---|---|
CURRENT_DATE( ) (ODBC 3.0) |
현재 날짜를 반환합니다. |
CURRENT_TIME[( time-precision )] (ODBC 3.0) |
현재 현지 시간을 반환합니다. time-precision 인수는 반환된 값의 초 전체 자릿수를 결정합니다. |
DAYNAME( date_exp ) (ODBC 2.0) |
date_exp의 날짜 부분에서 데이터 원본에 따른 요일 이름을 포함한 문자열을 반환합니다(예: 영어를 사용하는 데이터 원본의 경우 Sunday에서 Saturday까지 또는 Sun.에서 Sat.까지. 독일어를 사용하는 데이터 원본의 경우 Sonntag에서 Samstag까지). |
DAYOFMONTH( date_exp ) (ODBC 1.0) |
date_exp의 월 필드를 기준으로 해당 월의 일을 1에서 31 사이 정수 값으로 반환합니다. |
DAYOFWEEK( date_exp ) (ODBC 1.0) |
date_exp의 주 필드를 기준으로 해당 요일을 1에서 7 사이의 정수 값으로 반환합니다. 1이 일요일을 나타냅니다. |
HOUR( time_exp ) (ODBC 1.0) |
time_exp의 시간 필드를 기준으로 해당 시간을 0에서 23 사이의 정수 값으로 반환합니다. |
MINUTE( time_exp ) (ODBC 1.0) |
time_exp의 분 필드를 기준으로 해당 분을 0에서 59 사이의 정수 값으로 반환합니다. |
MONTHNAME( date_exp ) (ODBC 2.0) |
date_exp의 월 부분에서 데이터 원본에 따라 특정 월 이름을 포함한 문자열을 반환합니다(예: 영어를 사용하는 데이터 원본의 경우 January에서 December까지 또는 Jan.에서 Dec.까지. 독일어를 사용하는 데이터 원본의 경우 Januar에서 Dezember까지). |
QUARTER( date_exp ) (ODBC 1.0) |
date_exp의 분기를 1에서 4 사이의 정수 값으로 반환합니다. 1은 1월 1일부터 3월 31일까지를 나타냅니다. |
WEEK( date_exp ) (ODBC 1.0) |
date_exp의 주 필드를 기준으로 해당 연도의 주를 1에서 53 사이의 정수 값으로 반환합니다. |
예
1. 저장 프로시저에서 ODBC 함수 사용
다음 예에서는 저장 프로시저에 ODBC 함수를 사용합니다.
CREATE PROCEDURE dbo.ODBCprocedure
(
@string_exp nvarchar(4000)
)
AS
SELECT {fn OCTET_LENGTH( @string_exp )};
2. 사용자 정의 함수에서 ODBC 함수 사용
다음 예에서는 사용자 정의 함수에 ODBC 함수를 사용합니다.
CREATE FUNCTION dbo.ODBCudf
(
@string_exp nvarchar(4000)
)
RETURNS int
AS
BEGIN
DECLARE @len int
SET @len = (SELECT {fn OCTET_LENGTH( @string_exp )})
RETURN(@len)
END ;
SELECT dbo.ODBCudf('Returns the length.');
--Returns 38
3. SELECT 문에서 ODBC 함수 사용
다음 SELECT 문에서는 ODBC 함수를 사용합니다.
DECLARE @string_exp nvarchar(4000) = 'Returns the length.';
SELECT {fn BIT_LENGTH( @string_exp )};
-- Returns 304
SELECT {fn OCTET_LENGTH( @string_exp )};
-- Returns 38
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};
-- Returns CONCAT returns a character string
SELECT {fn TRUNCATE( 100.123456, 4)};
-- Returns 100.123400
SELECT {fn CURRENT_DATE( )};
-- Returns 2007-04-20
SELECT {fn CURRENT_TIME(6)};
-- Returns 10:27:11.973000
DECLARE @date_exp nvarchar(30) = '2007-04-21 01:01:01.1234567';
SELECT {fn DAYNAME( @date_exp )};
-- Returns Saturday
SELECT {fn DAYOFMONTH( @date_exp )};
-- Returns 21
SELECT {fn DAYOFWEEK( @date_exp )};
-- Returns 7
SELECT {fn HOUR( @date_exp)};
-- Returns 1
SELECT {fn MINUTE( @date_exp )};
-- Returns 1
SELECT {fn MONTHNAME( @date_exp )};
-- Returns April
SELECT {fn QUARTER( @date_exp )};
-- Returns 2
SELECT {fn WEEK( @date_exp )};
-- Returns 16