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

참고 항목

참조