Скалярные функции ODBC (Transact-SQL)
В инструкциях Transact-SQL можно использовать скалярные функции ODBC. Эти инструкции интерпретируются средой SQL Server. Они могут использоваться в хранимых процедурах и других определяемых пользователем функциях. Они включают строковые, числовые и системные функции, а также функции даты, времени и интервалов.
Использование
SELECT {fn <function_name> [ (<argument>,....n) ] }
Функции
В следующей таблице приводится список скалярных функций ODBC, не дублирующихся в Transact-SQL.
Строковые функции
Функция |
Описание |
---|---|
BIT_LENGTH( строковое_выражение ) (ODBC 3.0) |
Возвращает длину строкового выражения в битах. Не работает только для строковых типов данных. Поэтому неявное преобразование string_exp в string выполняться не будет, а вместо этого будет возвращен (внутренний) размер заданного типа данных. |
CONCAT( строковое_выражение1,строковое_выражение2) (ODBC 1.0) |
Возвращает символьную строку, являющуюся результатом сцепления строк строковое_выражение2 и строковое_выражение1. Полученная в результате строка зависит от СУБД. Например, если столбец, представленный строкой строковое_выражение1, объединяется со значением NULL, DB2 возвратит NULL, а SQL Server возвратит строку со значением, отличным от NULL. |
OCTET_LENGTH( строковое_выражение ) (ODBC 3.0) |
Возвращает длину строкового выражения в байтах. Результатом является наименьшее целочисленное значение, не меньшее, чем число битов, разделенное на 8. Не работает только для строковых типов данных. Поэтому неявное преобразование string_exp в string выполняться не будет, а вместо этого будет возвращен (внутренний) размер заданного типа данных. |
Числовые функции
Функция |
Описание |
---|---|
TRUNCATE( числовое_выражение, целое_выражение) (ODBC 2.0) |
Возвращает выражение «числовое_выражение», усеченное до целого числа позиций «целое_выражение» справа от десятичной запятой. Если значение «целое_выражение» отрицательное, выражение «числовое_выражение» усекается до |целое_выражение| позиций слева от десятичной запятой. |
Функции даты, времени и интервалов
Функция |
Описание |
---|---|
CURRENT_DATE( ) (ODBC 3.0) |
Возвращает текущую дату. |
CURRENT_TIME[( точность_в_секундах)] (ODBC 3.0) |
Возвращает текущее время. Аргумент «точность_в_секундах» определяет точность времени возвращаемого значения в секундах |
DAYNAME( выражение_даты ) (ODBC 2.0) |
Возвращает символьную строку, содержащую зависящий от источника данных день недели (например, от Sunday до Saturday или от Sun. до Sat., если источник данных использует английский язык, либо от Sonntag до Samstag, если источник данных использует немецкий) для части дня недели выражения «выражение_даты». |
DAYOFMONTH( выражение_даты ) (ODBC 1.0) |
Возвращает день месяца из поля месяца в выражении «выражение_даты» в виде целочисленного значения в диапазоне 1–31. |
DAYOFWEEK( выражение_даты ) (ODBC 1.0) |
Возвращает день недели из поля недели в выражении «выражение_даты» в виде целочисленного значения в диапазоне 1-7, где 1 означает воскресенье. |
HOUR( выражение_времени ) (ODBC 1.0) |
Возвращает час из поля часа в выражении «выражение_времени» в виде целочисленного значения в диапазоне 0–23. |
MINUTE( выражение_времени ) (ODBC 1.0) |
Возвращает минуту из поля минуты в выражении «выражение_времени» в виде целочисленного значения в диапазоне 0-59. |
MONTHNAME( выражение_даты ) (ODBC 2.0) |
Возвращает символьную строку, содержащую зависящее от источника данных название месяца (например, от January до December или от Jan. до Dec., если источник данных использует английский язык, либо от Januar до Dezember, если источник данных использует немецкий) для компонента месяца выражения «выражение_даты». |
QUARTER( выражение_даты ) (ODBC 1.0) |
Возвращает квартал в выражении «выражение_даты» в виде целочисленного значения в диапазоне 1–4, где 1 означает период с 1 января по 31 марта. |
WEEK( выражение_даты ) (ODBC 1.0) |
Возвращает порядковую неделю года из поля недели в выражении «выражение_даты» в виде целочисленного значения в диапазоне 1-53. |
Примеры
А. Использование функции ODBC в хранимой процедуре
В следующем примере функция ODBC используется в хранимой процедуре.
CREATE PROCEDURE dbo.ODBCprocedure
(
@string_exp nvarchar(4000)
)
AS
SELECT {fn OCTET_LENGTH( @string_exp )};
Б. Использование функции 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
В. Использование функций ODBC в инструкциях SELECT
В следующих инструкциях 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