Поделиться через


Скалярные функции ODBC (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

В инструкциях Transact-SQL можно использовать скалярные функции ODBC. Эти инструкции интерпретируются SQL Server. Они могут использоваться в хранимых процедурах и других определяемых пользователем функциях. Они включают строковые, числовые и системные функции, а также функции даты, времени и интервалов.

Использование

SELECT {fn <function_name> [ (<argument>,....n) ] }

Функции

В следующих таблицах приводится список скалярных функций ODBC, не дублируемых в Transact-SQL.

Строковые функции

Function Description
BIT_LENGTH( строковое_выражение ) (ODBC 3.0) Возвращает длину строкового выражения в битах.

Возвращает внутренний размер заданного типа данных без преобразования "строкового_выражения" в строку.
CONCAT( строковое_выражение1,строковое_выражение2) (ODBC 1.0) Возвращает символьную строку, являющуюся результатом сцепления строк строковое_выражение2 и строковое_выражение1. Полученная в результате строка зависит от СУБД. Например, если столбец, представленный string_exp1 содержит значение NULL, DB2 вернет ЗНАЧЕНИЕ NULL, но SQL Server вернет строку, не содержащую NULL.
OCTET_LENGTH( строковое_выражение ) (ODBC 3.0) Возвращает длину строкового выражения в байтах. Результатом является наименьшее целочисленное значение, не меньшее, чем число битов, разделенное на 8.

Возвращает внутренний размер заданного типа данных без преобразования "строкового_выражения" в строку.

Числовые функции

Function Description
TRUNCATE( числовое_выражение, целое_выражение) (ODBC 2.0) Возвращает выражение «числовое_выражение», усеченное до целого числа позиций «целое_выражение» справа от десятичной запятой. Если integer_exp отрицательно, numeric_exp усечено до |integer_exp| позиции слева от десятичной запятой.

Функции даты, времени и интервалов

Function Description
CURRENT_DATE( ) (ODBC 3.0) Возвращает текущую дату.
CURDATE( ) (ODBC 3.0) Возвращает текущую дату.
CURRENT_TIME[( time-precision )] (ODBC 3.0) Возвращает текущее время. Аргумент «точность_в_секундах» определяет точность времени возвращаемого значения в секундах
CURTIME() (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 соответствует Sunday (воскресенью).
HOUR( выражение_времени ) (ODBC 1.0) Возвращает час из поля часа в "выражении_времени" в виде целочисленного значения в диапазоне 0–23.
MINUTE( выражение_времени ) (ODBC 1.0) Возвращает минуту из поля минуты в "выражении_времени" в виде целочисленного значения в диапазоне 0–59.
SECOND( выражение_времени ) (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 )};  

B. Использование функции 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 ;  
GO
SELECT dbo.ODBCudf('Returns the length.');  
--Returns 38  

Примечание.

Microsoft Fabric поддерживает скалярные функции ODBC, но в настоящее время не поддерживает определяемые пользователем функции, возвращающие значения, как показано в примере B.

C. Использование функций 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 SECOND( @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  

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

D. Использование функции ODBC в хранимой процедуре

В следующем примере функция ODBC используется в хранимой процедуре.

CREATE PROCEDURE dbo.ODBCprocedure  
(  
    @string_exp NVARCHAR(4000)  
)  
AS  
SELECT {fn BIT_LENGTH( @string_exp )};  

Е. Использование функции ODBC в определяемой пользователем функции

В следующем примере функция ODBC используется в определяемой пользователем хранимой процедуре.

CREATE FUNCTION dbo.ODBCudf  
(  
    @string_exp NVARCHAR(4000)  
)  
RETURNS INT  
AS  
BEGIN  
DECLARE @len INT  
SET @len = (SELECT {fn BIT_LENGTH( @string_exp )})  
RETURN(@len)  
END ;  
GO
SELECT dbo.ODBCudf('Returns the length in bits.');  
--Returns 432  

F. Использование функций ODBC в инструкциях SELECT

В следующих инструкциях SELECT используются функции ODBC.

DECLARE @string_exp NVARCHAR(4000) = 'Returns the length.';  
SELECT {fn BIT_LENGTH( @string_exp )};  
-- Returns 304  
  
SELECT {fn CONCAT( 'CONCAT ','returns a character string')};  
-- Returns CONCAT returns a character string  
SELECT {fn CURRENT_DATE( )};  
-- Returns today's date  
SELECT {fn CURRENT_TIME(6)};  
-- Returns the time  
  
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 SECOND( @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  

См. также

Встроенные функции (Transact-SQL)