Скалярные функции 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.
В. Использование функций 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