SnowConvert AI - Function References for Teradata

QUARTERNUMBER_OF_YEAR_UDF

定义

一个根据 ISO 日历年计算给定日期所属季度的用户定义的函数 (UDF),类似于 Teradata 的 QUARTERNUMBER_OF_YEAR_UDF(date, 'ISO') 函数。

PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TimeSTAMP_TZ

提取季度数的方法。

返回

一个整数 (1-4),表示日期属于一年中的哪个季度。

使用示例

输入:

SELECT PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2022-01-01'),
PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2025-12-31');
Copy

输出:

4, 1
Copy

DAYNUMBER_OF_YEAR_UDF

定义

返回一年内给定时间戳的天数。天数范围为 1 到 365(闰年为 366)。此函数的行为与 DAYNUMBER_OF_YEAR(DATE, 'ISO') 相同。

PUBLIC.DAYNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

从日期获取其在一年中的序号。

返回

从 1 到 371 的整数。

示例

输入:

SELECT DAYNUMBER_OF_YEAR(CURRENT_DATE,'ISO');
Copy

输出:

SELECT
PUBLIC.DAYNUMBER_OF_YEAR_UDF(CURRENT_DATE());
Copy

SUBSTR_UDF (STRING, FLOAT)

警告

此用户定义函数 (UDF) 接受两个参数(重载函数)。

定义

使用起始位置和长度从指定字符串中检索部分文本。

PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT)
Copy

参数

BASE_EXPRESSION 是一个字符串参数,用于定义操作的基本表达式。

要从中提取一部分的源文本。

START_POSITION – 一个浮点数,用于指定输入字符串中的起始位置。

要开始从字符串中提取字符的位置。

返回

必须包含的子字符串。

迁移示例

输入:

SELECT SUBSTRING('Hello World!' FROM -2);
Copy

输出:

SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
Copy

CHKNUM_UDF

定义

验证字符串是否包含有效的数值。

PUBLIC.CHKNUM_UDF(NUM STRING);
Copy

参数

NUM 一个代表数字的字符串

需要验证的文本字符串。

返回

如果输入参数是有效的数值,则返回 1。如果输入不是有效的数字(例如文本或特殊字符),则返回 0。

示例

SELECT CHKNUM('1032');
Copy

输出:

SELECT
PUBLIC.CHKNUM_UDF('1032');
Copy

TD_YEAR_END_UDF

定义

一个用户定义的函数 (UDF),用于重现 Teradata 的 TD_YEAR_END(DATE) 或 TD_YEAR_END(DATE, 'COMPATIBLE') 函数,可返回给定日期所在年份的最后一天。

PUBLIC.TD_YEAR_END_UDF(INPUT date)
Copy

参数

INPUT DATE

获取当前年份的最后一天。

返回

12 月的最后一天(12 月 31 日)。

使用示例

输入:

SELECT  PUBLIC.TD_YEAR_END_UDF(DATE '2022-01-01'),
PUBLIC.TD_YEAR_END_UDF(DATE '2022-04-12');
Copy

输出:

2022-12-31, 2022-12-31
Copy

PERIOD_OVERLAPS_UDF

定义

实施 OVERLAPS OPERATOR 功能的用户定义的函数 (UDF)。此函数会比较两个或多个时间段,并确定它们是否有重叠的时间范围。

PERIOD_OVERLAPS_UDF(PERIODS ARRAY)
Copy

参数

PERIODS 是一个包含时间段的数组

将要比较的所有时间段表达式。

返回

如果集合中的所有时间段都至少有一个共同点(重叠),则为 TRUE,否则为 FALSE。

迁移示例

SELECT
	PERIOD(DATE '2009-01-01', DATE '2010-09-24')
	OVERLAPS
	PERIOD(DATE '2009-02-01', DATE '2009-06-24');
Copy

输出:

SELECT
	PUBLIC.PERIOD_OVERLAPS_UDF(ARRAY_CONSTRUCT(PUBLIC.PERIOD_UDF(DATE '2009-01-01', DATE '2010-09-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!, PUBLIC.PERIOD_UDF(DATE '2009-02-01', DATE '2009-06-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!)) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!;
Copy

WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF

定义

计算指定日期在当前季度内的周次编号。

PUBLIC.WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算其属于该季度的哪一周的日期。

返回

一个整数,表示日期属于该季度的哪一周 (1-13)。

使用示例

输入:

SELECT WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(DATE '2022-05-01', 'COMPATIBLE'),
WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(DATE '2022-07-06', 'COMPATIBLE')
Copy

输出:

5, 1
Copy

ROMAN_NUMERALS_MONTH_UDF

定义

使用罗马数字将日期转换为相应的月份。

PUBLIC.ROMAN_NUMERALS_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

从中提取月份的输入日期。

返回

varchar 表示从给定日期提取的月份。

使用示例

输入:

SELECT PUBLIC.ROMAN_NUMERALS_MONTH_UDF(DATE '2021-10-26');
Copy

输出:

'X'
Copy

TD_YEAR_BEGIN_UDF

定义

一个用户定义的函数 (UDF),通过返回给定日期所在年份的第一天来模仿 TD_YEAR_BEGIN 或 TD_YEAR_BEGIN(DATE, 'COMPATIBLE') 的行为。

PUBLIC.TD_YEAR_BEGIN_UDF(INPUT DATE)
Copy

参数

INPUT DATE

获取当前年份的第一天。

返回

1 月的第一天。

使用示例

输入:

SELECT TD_YEAR_BEGIN(DATE '2022-01-01', 'COMPATIBLE'),
TD_YEAR_BEGIN(DATE '2022-04-12');
Copy

输出:

2022-01-01, 2022-01-01
Copy

FULL_MONTH_NAME_UDF

定义

按您选择的格式返回月份的全名:全部为大写字母、全部为小写字母,或仅将首字母大写。

PUBLIC.FULL_MONTH_NAME_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Copy

参数

INPUT TIMESTAMP_TZ

日期格式应显示月份名称。

RESULTCASE VARCHAR

显示结果时应采用的格式。有效选项为“大写”、“小写”或“首字母大写”。

返回

返回一个包含月份全名的 varchar

使用示例

输入:

SELECT PUBLIC.FULL_MONTH_NAME_UDF(DATE '2021-10-26', 'uppercase');
SELECT PUBLIC.FULL_MONTH_NAME_UDF(DATE '2021-10-26', 'lowercase');
SELECT PUBLIC.FULL_MONTH_NAME_UDF(DATE '2021-10-26', 'firstOnly');
Copy

输出:

OCTOBER
october
October
Copy

TO_BYTES_HEX_UDF

定义

将十进制(以 10 为基数)数字转换为十六进制(以 16 为基数)表示形式。

TO_BYTES_HEX_UDF(INPUT FLOAT)
Copy

参数

INPUT 是一个浮点数参数。

将转换为十六进制格式的数字。

返回

代表十六进制值的字符串。

使用示例

输入:

SELECT TO_BYTES_HEX_UDF('448');
Copy

输出:

01c0
Copy

PERIOD_INTERSECT_UDF

定义

一个重现 P_INTERSECT 运算符的用户定义的函数 (UDF)。此函数将比较两个或多个时间段并确定它们重叠的位置,返回它们之间的共同时间间隔。

有关源函数的更多详细信息,请参阅 文档 (https://docs.teradata.com/r/SQL-Date-and-Time-Functions-and-Expressions/July-2021/Period-Functions-and-Operators/P_INTERSECT/P_INTERSECT-Syntax)。

PERIOD_INTERSECT_UDF(PERIODS ARRAY)
Copy

参数

PERIODS 是一个包含时间段的数组。

所有需要比较的时间段表达式。

返回

两个时间段相交或共享相同日期的部分。

迁移示例

输入:

SELECT
	PERIOD(DATE '2009-01-01', DATE '2010-09-24')
	P_INTERSECT
	PERIOD(DATE '2009-02-01', DATE '2009-06-24');
Copy

输出:

SELECT
	PUBLIC.PERIOD_INTERSECT_UDF(ARRAY_CONSTRUCT(PUBLIC.PERIOD_UDF(DATE '2009-01-01', DATE '2010-09-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!, PUBLIC.PERIOD_UDF(DATE '2009-02-01', DATE '2009-06-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!)) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!;
Copy

INTERVAL_TO_SECONDS_UDF

定义

将时间间隔转换为秒。

PUBLIC.INTERVAL_TO_SECONDS_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR())
Copy

参数

INPUT_PART 是一个 VARCHAR 类型的变量,用于存储输入数据。

将转换为秒的时间长度。

INPUT_VALUE VARCHAR – 接受文本数据的输入参数。

转换的时间间隔类型。示例包括“DAY”、“DAY TO HOUR”和其他有效的间隔类型。

返回

一个十进制数字,表示以秒为单位的时间间隔。

TIMESTAMP_ADD_UDF

定义

将两个时间戳合并为一个值。

PUBLIC.TIMESTAMP_ADD_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
Copy

参数

FIRST_DATE 是一个包含日期和时间信息的时间戳字段,支持时区 (TIMESTAMP_LTZ)

添加此项目的初始日期。

SECOND_DATE 是一个包含时区信息 (TIMESTAMP_LTZ)(带有本地时区的时间戳)的时间戳列

第二次添加该项目的日期。

返回

通过组合输入日期参数生成的时间戳。

INTERVAL_MULTIPLY_UDF

定义

对时间间隔执行乘法运算的用户定义的函数 (UDF)。

PUBLIC.INTERVAL_MULTIPLY_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_MULT INTEGER)
Copy

参数

INPUT_PART 是一个 VARCHAR 类型的变量,用于存储输入数据。

用于乘法的值,指定为“YEAR TO MONTH”。

INPUT_VALUE VARCHAR

要执行乘法的间隔。

INPUT_MULT 是一个整数参数,用作输入值的乘数。

将在乘法运算中使用的数字。

返回

输出是通过将时间间隔乘以数值来计算的。

迁移示例

输入:

SELECT INTERVAL '6-10' YEAR TO MONTH * 8;
Copy

输出:

SELECT
PUBLIC.INTERVAL_MULTIPLY_UDF('YEAR TO MONTH', '6-10', 8);
Copy

TD_DAY_OF_WEEK_UDF

定义

一个用户定义的函数 (UDF),用于重现 Teradata 的 TD_DAY_OF_WEEK 功能。有关原始 Teradata 函数的详细信息,请参阅 此处 (https://docs.teradata.com/r/SQL-Date-and-Time-Functions-and-Expressions/July-2021/Calendar-Functions/td_day_of_week/DayOfWeek)。

PUBLIC.TD_DAY_OF_WEEK_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

从中获取星期几的日期。

返回

一个表示星期几的整数,范围为 1 到 7,其中:

  • 1 = 星期日

  • 2 = 星期一

  • 3 = 星期二

  • 4 = 星期三

  • 5 = 星期四

  • 6 = 星期五

  • 7 = 星期六

迁移示例

输入:

SELECT td_day_of_week(DATE '2022-03-02');
Copy

输出:

SELECT
PUBLIC.TD_DAY_OF_WEEK_UDF(DATE '2022-03-02');
Copy

ISO_YEAR_PART_UDF

定义

根据给定日期计算 ISO 日历年。指定要保留的位数可以缩短结果。

PUBLIC.ISO_YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
Copy

参数

INPUT TIMESTAMP_TZ

从中提取 ISO 年份的日期。

DIGITS 一个整数,表示要显示的最大位数

输出中所需的小数位数。

返回

返回代表给定日期的 ISO 年份的字符串 (varchar)。

使用示例

输入:

SELECT PUBLIC.ISO_YEAR_PART_UDF(DATE '2021-10-26', 3);
SELECT PUBLIC.ISO_YEAR_PART_UDF(DATE '2021-10-26', 2);
SELECT PUBLIC.ISO_YEAR_PART_UDF(DATE '2021-10-26', 1);
Copy

输出:

'021'
'21'
'1'
Copy

DIFF_TIME_PERIOD_UDF

定义

根据指定的时间单位参数计算两个日期之间的时间间隔。

PUBLIC.DIFF_TIME_PERIOD_UDF(TIME STRING, PERIOD VARCHAR(50))
Copy

参数

TIME 是一种数据类型,用于存储以小时、分钟、秒和分数秒为单位的时间值。是一种数据类型,表示存储为文本字符串的时间值。

将用作锚点的时间戳。

PERIOD 表示时间段的文本字段 (VARCHAR)

用于扩展的时段列。

返回

一个数值,表示两个日期之间的时间间隔。

使用示例

输入:

SELECT DIFF_TIME_PERIOD_UDF('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000');
Copy

输出:

5
Copy

WEEK_NUMBER_OF_QUARTER_ISO_UDF

定义

使用 ISO 日历标准计算日期在所属季度中的周次编号。此函数的行为与 Teradata 的 WEEKNUMBER_OF_QUARTER(DATE, 'ISO') 函数相同。

PUBLIC.WEEK_NUMBER_OF_QUARTER_ISO_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算其属于该季度的哪一周的日期。

返回

一个整数,表示这代表了该季度中的哪一周 (1-13)。

使用示例

输入:

SELECT WEEKNUMBER_OF_QUARTER(DATE '2022-05-01', 'ISO'),
WEEKNUMBER_OF_QUARTER(DATE '2022-07-06', 'ISO')
Copy

输出:

SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
Copy

NVP_UDF

定义

执行与 Teradata 的 NVP 函数 (https://docs.teradata.com/r/SQL-Functions-Expressions-and-Predicates/June-2020/String-Operators-and-Functions/NVP/NVP-Function-Syntax) 相同的功能。

NVP_UDF(INSTRING VARCHAR, NAME_TO_SEARCH VARCHAR, NAME_DELIMITERS VARCHAR, VALUE_DELIMITERS VARCHAR, OCCURRENCE FLOAT)
Copy

参数

INSTRING VARCHAR

名称-值对是由名称及其对应值组成的数据元素。

VARCHAR 类型的 NAME_TO_SEARCH

用于在名称值对 (NVP) 函数中搜索的名称参数。

NAME_DELIMITERS VARCHAR

用于将名称与对应值分开的字符。

VALUE_DELIMITERS VARCHAR

用于连接名称与其对应值的字符。

OCCURRENCE 是一个浮点数,表示某件事发生了多少次

要搜索的匹配模式的数量。

返回

包含与输入字符串相同数据的文本字符串 (VARCHAR)。

使用示例

输入:

SELECT PUBLIC.NVP_UDF('entree=-orange chicken&entree+.honey salmon', 'entree', '&', '=- +.', 1);
Copy

输出:

orange chicken
Copy

MONTH_SHORT_UDF

定义

以您选择的大写、小写或首字母大写格式返回月份的缩写名称(三个字母)。例如:“Jan”、“jan”或“JAN”。

PUBLIC.MONTH_SHORT_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Copy

参数

INPUT TIMESTAMP_TZ

格式化为显示缩写月份名称的日期。

RESULTCASE VARCHAR

要使用的字母大小写格式。有效选项有:

  • “uppercase”:将文本转换为全部使用大写字母

  • “lowercase”:将文本转换为全部使用小写字母

  • “firstOnly”:仅将首字母大写

返回

varchar 包含月份的缩写名称(例如,“Jan”、“Feb”等)。

使用示例

输入:

SELECT PUBLIC.MONTH_SHORT_UDF(DATE '2021-10-26', 'uppercase');
SELECT PUBLIC.MONTH_SHORT_UDF(DATE '2021-10-26', 'lowercase');
SELECT PUBLIC.MONTH_SHORT_UDF(DATE '2021-10-26', 'firstOnly');
Copy

输出:

OCT
oct
Oct
Copy

DATE_TO_INT_UDF

定义

一个用户定义的函数 (UDF),用于将日期值转换为其数字表示形式,类似于 Teradata 的 DATE-TO-NUMERIC 函数。

PUBLIC.DATE_TO_INT_UDF(DATE_TO_CONVERT DATE)
Copy

参数

DATE_TO_CONVERT 表示需要转换的日期值

将日期值转换为整数格式。

返回

返回数字格式的日期值。

示例

输入:

SELECT mod(date '2015-11-26', 5890), sin(current_date);

CREATE TABLE SAMPLE_TABLE
(
    VARCHAR_TYPE VARCHAR,
    CHAR_TYPE CHAR(11),
    INTEGER_TYPE INTEGER,
    DATE_TYPE DATE,
    TIMESTAMP_TYPE TIMESTAMP,
    TIME_TYPE TIME,
    PERIOD_TYPE PERIOD(DATE)
);

REPLACE VIEW SAMPLE_VIEW
AS
SELECT
CAST(DATE_TYPE AS SMALLINT),
CAST(DATE_TYPE AS DECIMAL),
CAST(DATE_TYPE AS NUMBER),
CAST(DATE_TYPE AS FLOAT),
CAST(DATE_TYPE AS INTEGER)
FROM SAMPLE_TABLE;
Copy

输出:

SELECT
mod(PUBLIC.DATE_TO_INT_UDF(date '2015-11-26'), 5890),
sin(PUBLIC.DATE_TO_INT_UDF(CURRENT_DATE()));

CREATE TABLE PUBLIC.SAMPLE_TABLE
(
    VARCHAR_TYPE VARCHAR,
    CHAR_TYPE CHAR(11),
    INTEGER_TYPE INTEGER,
    DATE_TYPE DATE,
    TIMESTAMP_TYPE TIMESTAMP,
    TIME_TYPE TIME,
    PERIOD_TYPE VARCHAR(24) COMMENT 'PERIOD(DATE)' /*** MSC-WARNING - MSCEWI1036 - PERIOD DATA TYPE "PERIOD(DATE)" CONVERTED TO VARCHAR ***/
);

CREATE OR REPLACE VIEW PUBLIC.SAMPLE_VIEW
AS
SELECT
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE)
FROM PUBLIC.SAMPLE_TABLE;
Copy

PERIOD_UDF

定义

一个重现 P_INTERSECT 运算符的用户定义的函数 (UDF)。此函数将比较两个或多个时间段并确定它们重叠的位置,返回它们之间的共同时间间隔。

创建周期开始值和结束值的字符串表示形式(TIMESTAMP 表示一种存储日期和时间信息的数据类型。TIMEDATE 是一种用于存储不带时间信息的日历日期(年、月和日)的数据类型)。此函数模拟 Teradata 的周期值构造函数。输出字符串遵循 Snowflake 中 PERIOD 值的默认格式。要调整输出的精度,可以执行以下任一操作:

  • 修改会话参数 timestamp_output_format

  • 使用此 UDF 的三参数版本

有关源函数的更多详细信息可以在 Teradata 文档 (https://docs.teradata.com/r/SQL-External-Routine-Programming/July-2021/SQL-Data-Type-Mapping/C-Data-Types/PERIOD-DATE/PERIOD-TIME/PERIOD-TIMESTAMP) 中找到。

PERIOD_UDF(D1 TIMESTAMP_NTZ, D2 TIMESTAMP_NTZ)
PERIOD_UDF(D1 DATE, D2 DATE)
PERIOD_UDF(D1 TIME, D2 TIME)
PERIOD_UDF(D1 TIMESTAMP_NTZ, D2 TIMESTAMP_NTZ, PRECISIONDIGITS INT)
PERIOD_UDF(D1 TIME, D2 TIME, PRECISIONDIGITS INT)
PERIOD_UDF(D1 TIMESTAMP_NTZ)
PERIOD_UDF(D1 DATE)
PERIOD_UDF(D1 TIME)
Copy

参数

TIMESTAMP

TimeStamp 数据类型代表特定的时间点,包括日期和时间两部分。

TIME

时间数据类型表示一天中的特定时间,不包含日期部分。

DATE

日期数据类型表示不含时间部分的日历日期。

PRECISIONDIGITS 指定以数值显示的小数位数。

要以时间格式显示的位数。

返回

返回以 PERIOD 类型值表示的字符串

使用示例

输入:

SELECT
PERIOD_UDF('2005-02-03'),
PERIOD_UDF(date '2005-02-03'),
PERIOD_UDF(TIMESTAMP '2005-02-03 12:12:12.340000'),
PERIOD_UDF(TIMESTAMP '2005-02-03 12:12:12.340000');
Copy

输出:

2005-02-03*2005-02-04,
2005-02-03*2005-02-04,
2005-02-03 12:12:12.340000*2005-02-03 12:12:12.340001,
2005-02-03 12:12:12.340000*2005-02-03 12:12:12.340001
Copy

DAYNAME_LONG_UDF (TIMESTAMP_TZ, VARCHAR)

警告

这是一个用户定义的函数 (UDF),接受 两个 不同的参数类型

定义

以您选择的大写、小写或首字母大写格式(例如 “MONDAY”、“monday”或“Monday”)返回工作日的全名。

PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Copy

参数

INPUT TIMESTAMP_TZ

用于确定日期属于一周中的哪一天的输入日期。

RESULTCASE VARCHAR

将要展示的预期结果或情景。

返回

返回一个包含一周中某一天全名的字符串。

使用示例

输入:

SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2021-10-26', 'uppercase');
SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2021-10-26', 'lowercase');
SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2021-10-26', 'firstOnly');
Copy

输出:

'TUESDAY'
'tuesday'
'Tuesday'
Copy

TD_DAY_OF_WEEK_COMPATIBLE_UDF

定义

处理时间戳以确定它是一周中的哪一天。此函数的行为与 DAYNUMBER_OF_WEEK(DATE, 'COMPATIBLE') 相同。

PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于确定日期属于一周中的哪一天的输入日期。

返回

返回 1 到 7 之间的数字,表示其属于一周中的哪一天,其中 1 表示一周的第一天。例如,如果 1 月 1 日为星期三,则星期三 = 1,星期四 = 2,星期五 = 3,星期六 = 4,星期日 = 5,星期一 = 6,星期二 = 7。

使用示例

输入:

SELECT PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(DATE '2022-01-01'),
PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(DATE '2023-05-05');
Copy

输出:

1, 6
Copy

JAROWINKLER_UDF

定义

使用 Jaro-Winkler 算法计算两个字符串的相似程度。该算法给出的分数介于 0(完全不同)和 1(相同)之间。

PUBLIC.JAROWINKLER_UDF (string1 VARCHAR, string2 VARCHAR)
Copy

参数

VARCHAR 类型的 string1

要处理的文本

VARCHAR 类型的 string2

要处理的文本

返回

该函数返回 0 或 1。

使用示例

输入:

SELECT PUBLIC.JAROWINKLER_UDF('święta', 'swieta')
Copy

输出:

0.770000
Copy

YEAR_BEGIN_ISO_UDF

定义

UDF,用于计算给定日期的 ISO 年度的第一天。其工作原理是使用 DAYOFWEEKISO 函数和 PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF,找到最接近该年度 1 月 1 日的星期一。该函数要么加上要么减去一定的天数才能找到这个星期一。

PUBLIC.YEAR_BEGIN_ISO_UDF(INPUT DATE)
Copy

参数

INPUT TIMESTAMP_TZ

根据 ISO 日历标准,代表当年 1 月 1 日的日期。

返回

根据 ISO 日历标准,一年的第一天。

使用示例

输入:

SELECT  PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-04-12');
Copy

输出:

2021-01-04, 2022-01-03
Copy

YEAR_PART_UDF

定义

从日期中提取年份并将其截断为指定的位数。

PUBLIC.YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
Copy

参数

INPUT TIMESTAMP_TZ

从中提取年份的日期。

DIGITS 一个整数,表示要显示的最大位数

输出中所需的小数位数。

返回

从指定日期提取年份部分。

使用示例

输入:

SELECT PUBLIC.YEAR_PART_UDF(DATE '2021-10-26', 3);
SELECT PUBLIC.YEAR_PART_UDF(DATE '2021-10-26', 2);
SELECT PUBLIC.YEAR_PART_UDF(DATE '2021-10-26', 1);
Copy

输出:

'021'
'21'
'1'
Copy

YEAR_WITH_COMMA_UDF

定义

从日期中提取年份,并在第一和第二位数字之间添加逗号。例如,如果年份是 2023 年,则返回“2,023”。

PUBLIC.YEAR_WITH_COMMA_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

从中提取年份的输入日期。

返回

以带有逗号分隔符的 varchar(文本)形式返回日期值的年份部分。

使用示例

输入:

SELECT PUBLIC.YEAR_WITH_COMMA_UDF(DATE '2021-10-26');
Copy

输出:

'2,021'
Copy

MONTHS_BETWEEN_UDF

定义

计算两个日期之间的月数

MONTHS_BETWEEN_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
Copy

参数

FIRST_DATE 是一个包含日期和时间信息的时间戳列,支持时区 (TIMESTAMP_LTZ)

函数开始处理数据的初始日期。

SECOND_DATE TIMESTAMP_LTZ

定义何时停止计数的结束日期。

返回

两个日期之间的月数。

使用示例

输入:

SELECT MONTHS_BETWEEN_UDF('2022-02-14', '2021-02-14');
Copy

输出:

12
Copy

SECONDS_PAST_MIDNIGHT_UDF

定义

计算指定时间自午夜以来经过的秒数。

PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(INPUT TIME)
Copy

参数

INPUT TIME

该函数计算自午夜 (00:00:00) 到当前时间所经过的总秒数。

返回

一个 varchar 值,表示自午夜以来经过的秒数。

使用示例

输入:

SELECT PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(TIME'10:30:45');
Copy

输出:

'37845'
Copy

CHAR2HEXINT_UDF

定义

返回一个包含输入字符串中每个字符的十六进制(以 16 为基数)表示的字符串。

PUBLIC.CHAR2HEXINT_UDF(INPUT_STRING VARCHAR);
Copy

参数

INPUT_STRING 是一个 VARCHAR 类型的变量,用于存储文本数据。

需要转换的输入字符串。

返回

返回一个包含输入字符串的十六进制表示的字符串。

示例

输入:

SELECT CHAR2HEXINT('1234') from t1;
Copy

输出:

SELECT
PUBLIC.CHAR2HEXINT_UDF('1234') from
t1;
Copy

来自源函数的更多信息

函数文档可在 Teradata 文档 (https://docs.teradata.com/r/SQL-Functions-Expressions-and-Predicates/June-2020/String-Operators-and-Functions/CHAR2HEXINT) 中找到。

INTERVAL_ADD_UDF

定义

UDFs(用户定义的函数),用于处理间隔值和间隔类型的列引用间的减法运算。

PUBLIC.INTERVAL_ADD_UDF
(INPUT_VALUE1 VARCHAR(), INPUT_PART1 VARCHAR(30), INPUT_VALUE2 VARCHAR(), INPUT_PART2 VARCHAR(30), OP CHAR, OUTPUT_PART VARCHAR())
Copy

参数

VARCHAR 类型的 INPUT_VALUE1

将由系统处理的输入数据。

VARCHAR 类型的 INPUT_PART1

要使用的时间单位,例如“HOUR”。

INPUT_VALUE2 是 VARCHAR 数据类型参数。

引用列的名称,例如“INTERVAL_HOUR_TYPE

INPUT_PART2 VARCHAR

分配给引用列的数据类型。

OP 字符

当前正在分析的符号或运算符。

OUTPUT_PART VARCHAR

返回值的数据类型。

返回

一个 varchar 值,表示减去两个时间间隔的结果。

迁移示例

输入:

CREATE TABLE INTERVAL_TABLE
(
    INTERVAL_YEAR_TYPE INTERVAL YEAR
);

SELECT INTERVAL_YEAR_TYPE - INTERVAL '7' MONTH FROM INTERVAL_TABLE;
Copy

输出:

CREATE OR REPLACE TABLE INTERVAL_TABLE
(
    INTERVAL_YEAR_TYPE VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;

SELECT
    PUBLIC.INTERVAL_ADD_UDF(INTERVAL_YEAR_TYPE, 'YEAR', '7', 'MONTH', '-', 'YEAR TO MONTH')
    FROM
    INTERVAL_TABLE;
Copy

DAY_OF_WEEK_LONG_UDF

定义

用户定义的函数 (UDF),用于将时间戳转换为当天的全名(例如,“星期一”、“星期二”等)。

PUBLIC.DAY_OF_WEEK_LONG_UDF(INPUT_DATE TIMESTAMP)
Copy

参数

INPUT_DATE 代表时间戳值

时间戳将转换为当天的完整名称(例如,“星期一”、“星期二”等)。

返回

当天的英文名称。

TD_WEEK_OF_CALENDAR_UDF

定义

用户定义的函数 (UDF),可直接取代 Teradata 的 TD_WEEK_OF_CALENDAR (https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/SQL-Date-and-Time-Functions-and-Expressions/Calendar-Functions/td_week_of_calendar) 函数,在 Snowflake 中提供相同的功能。

PUBLIC.TD_WEEK_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算自 1900 年 1 月 1 日以来经过的周数的日期。

返回

一个整数,表示 1900 年 1 月 1 日到指定日期之间的完整周数

迁移示例

输入:

SELECT TD_WEEK_OF_CALENDAR(DATE '2023-11-30')
Copy

输出:

SELECT
PUBLIC.TD_WEEK_OF_CALENDAR_UDF(DATE '2023-11-30');
Copy

WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF

定义

将负数转换为使用尖括号 (< >) 而不是减号 (-)。当原始 Teradata 格式字符串中存在 PR(括号)格式元素时,就会发生这种转换。

PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(INPUT NUMBER, FORMATARG VARCHAR)
Copy

参数

INPUT 是一个数值

将转换为文本字符串 (varchar) 的数值。

FORMATARG 是 VARCHAR 类型的参数,用于指定数据的格式。

格式参数指定如何将 INPUT 值转换为文本 (varchar) 表示形式。

返回

一个包含用尖括号 (< >) 括起来的负数的 varchar

使用示例

输入:

SELECT PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(8456, '9999');
SELECT PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(-8456, '9999');
Copy

输出:

'8456'
'<8456>'
Copy

INSTR_UDF (STRING, STRING)

警告

这是一个用户定义的函数 (UDF),接受 两个 不同的参数集

定义

查找 search_string 出现在 source_string 中的所有实例。

PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING)
Copy

参数

SOURCE_STRING 表示需要处理的输入字符串

将要搜索的文本。

SEARCH_STRING 是 STRING 类型的参数,用于指定要搜索的文本。

该函数将查找和匹配的文本模式。

返回

在源字符串中找到模式的索引位置(从位置 1 开始)。

使用示例

输入:

SELECT INSTR_UDF('INSTR FUNCTION','N');
Copy

输出:

2
Copy

TRANSLATE_CHK_UDF

定义

检查代码是否可以在不生成任何错误的情况下成功转换。

PUBLIC.TRANSLATE_CHK_UDF(COL_NAME STRING, SOURCE_REPERTOIRE_NAME STRING)
Copy

参数

COL_NAME 是一个表示列名称的字符串变量。

需要验证的列。

SOURCE_REPERTOIRE_NAME 是一个字符串参数,用于指定源目录的名称。

源集合或库的名称。

返回

0:转换成功完成,没有错误。NULL:未返回任何结果(null 值)。

字符串中第一个字符的位置导致转换错误。

使用示例

输入:

SELECT PUBLIC.TRANSLATE_CHK_UDF('ABC', 'UNICODE_TO_LATIN');
Copy

输出:

0
Copy

EXPAND_ON_UDF

备注

为了提高可读性,我们在此示例中简化了代码的某些部分。

定义

重现 Teradata 的 expand-on 函数的行为。

PUBLIC.EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD STRING)
Copy

参数

TIME 是一个将时间值存储为文本 (STRING) 的数据类型。

锚完全展开所需的时间。

SEQ 序列号

每行的值的计算顺序。

PERIOD:一个表示时间段的文本值

指定时间段的日期。

返回

一个 VARCHAR 值,用于定义如何计算 expand-on 子句中的扩展周期。

迁移示例

输入:

SELECT bg FROM table1 EXPAND ON pd AS bg BY ANCHOR ANCHOR_SECOND;
Copy

输出:

WITH
ExpandOnCTE AS
(
SELECT
PUBLIC.EXPAND_ON_UDF('ANCHOR_SECOND', VALUE, pd) bg
FROM
table1,
TABLE(FLATTEN(PUBLIC.ROW_COUNT_UDF(PUBLIC.DIFF_TIME_PERIOD_UDF('ANCHOR_SECOND', pd))))
)
SELECT
bg
FROM
table1,
ExpandOnCTE;
Copy

ROW_COUNT_UDF

定义

返回一个包含从 1 到 DIFF_TIME_PERIOD_UDF 返回的值之间的序列数的数组。

PUBLIC.ROW_COUNT_UDF(NROWS DOUBLE)
Copy

参数

NROWS 以十进制数 (DOUBLE) 表示数据集中的总行数

DIFF_TIME_PERIOD_UDF 函数返回的值。

返回

一个数组,用于确定重现 EXPAND ON 子句功能所需的行数。

使用示例

输入:

SELECT ROW_COUNT_UDF(DIFFTTIME_PERIOD('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000'));
Copy

输出:

[1, 2, 3, 4, 5]
Copy

迁移示例

输入:

SELECT NORMALIZE emp_id, duration FROM project EXPAND ON duration AS bg BY ANCHOR ANCHOR_SECOND;
Copy

输出:

WITH ExpandOnCTE AS
(
SELECT
    PUBLIC.EXPAND_ON_UDF('ANCHOR_SECOND', VALUE, duration) bg
FROM
    project,
TABLE(FLATTEN(PUBLIC.ROW_COUNT_UDF(PUBLIC.DIFF_TIME_PERIOD_UDF('ANCHOR_SECOND', duration))))
)
SELECT NORMALIZE emp_id,
    duration
FROM
    project,
    ExpandOnCTE;
Copy

CENTURY_UDF

定义

计算给定日期所属的世纪。

PUBLIC.CENTURY_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于确定世纪的输入日期。

返回

以 varchar 形式返回给定日期所属世纪的编号。

使用示例

输入:

SELECT PUBLIC.CENTURY_UDF(DATE '1915-02-23');
Copy

输出:

'20'
Copy

TIME_DIFFERENCE_UDF

警告

此 UDF 已弃用,因为 Snowflake 现在提供内置的等效函数。有关更多详细信息,请参阅 TIMEDIFF 文档

定义

计算两个给定时间戳之间的时间间隔。

PUBLIC.TIME_DIFFERENCE_UDF
(MINUEND TIME, SUBTRAHEND TIME, INPUT_PART VARCHAR)
Copy

参数

MINUEND:作为被减数的时间戳值

将从原始值中减去的时间。

SUBTRAHEND:将从另一个时间戳中减去的时间戳值

已减去的时间。

INPUT_PART 是一个 VARCHAR 类型的变量,用于存储输入数据。

EXTRACT_PART 是一个 VARCHAR 类型的变量,用于存储字符串中提取的部分。

从时间间隔中提取一个数值。

返回

代表特定时间的文本值 (VARCHAR)。

示例

输入:

select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
Copy

输出:

SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
                                 from
tableName;
Copy

INTERVAL_DIVIDE_UDF

定义

执行间隔除法计算的自定义函数 (UDF)。

PUBLIC.INTERVAL_DIVIDE_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_DIV INTEGER)
Copy

参数

INPUT_PART 是一个 VARCHAR 类型的变量,代表数据的输入部分。

指定间隔类型的值,例如“YEAR TO MONTH”。

INPUT_VALUE VARCHAR

作为被除数的时间间隔。

INPUT_DIV 是一个整数值,表示输入除数。

将除以另一个数字的数字。

返回

输出是通过将时间间隔除以数值来计算的。

迁移示例

输入:

SELECT INTERVAL '6-10' YEAR TO MONTH / 8;
Copy

输出:

SELECT
PUBLIC.INTERVAL_DIVIDE_UDF('YEAR TO MONTH', '6-10', 8);
Copy

DAYNUMBER_OF_MONTH_UDF

定义

UDF 确定给定时间戳属于所在月的哪一天。它的功能与 Teradata 的 DAYNUMBER_OF_MONTH(DATE, 'ISO') 函数类似。

PUBLIC.DAYNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

日期值,用于确定其属于一周中的哪一天。

返回

从 1 到 33(含)的整数。

示例

输入:

SELECT DAYNUMBER_OF_MONTH (DATE'2022-12-22', 'ISO');
Copy

输出:

SELECT
PUBLIC.DAYNUMBER_OF_MONTH_UDF(DATE'2022-12-22');
Copy

LAST_DAY_DECEMBER_OF_ISO_UDF

定义

UDF(用户定义的函数),用于处理 12 月 31 日并返回相应的 ISO 年份。此函数用作 PUBLIC.YEAR_END_IDO_UDF 计算的一部分。

PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

要使用 ISO 年份格式获取 12 月的最后一天,请使用 12 月 31 日。

返回

以 ISO 年份格式表示的 12 月 31 日的日期。

使用示例

输入:

SELECT PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(DATE '2022-01-01');
Copy

输出:

2021-12-31
Copy

DATEADD_UDF

备注

为了提高可读性,我们在此示例中简化了代码的某些部分。

定义

计算两个日期之和的函数

PUBLIC.DATE_ADD_UDF(FIRST_DATE DATE, SECOND_DATE DATE)
Copy

参数

FIRST_DATE 表示类型为 DATE 的列

要包含的初始日期值。

SECOND_DATE 表示类型为 DATE 的列

将第二个日期值与 first_date 相加。

返回

结果是通过将两个输入参数相加计算得出的日期。

示例

输入:

SELECT
    CAST(CAST (COLUMNB AS DATE FORMAT 'MM/DD/YYYY') AS TIMESTAMP(0))
    +
    CAST (COLUMNA AS TIME(0) FORMAT 'HHMISS' )
FROM TIMEDIFF;
Copy

输出:

SELECT
    PUBLIC.DATEADD_UDF(CAST(CAST(COLUMNB AS DATE) !!!RESOLVE EWI!!! /*** SSC-EWI-0033 - FORMAT 'MM/DD/YYYY' REMOVED, SEMANTIC INFORMATION NOT FOUND. ***/!!! AS TIMESTAMP(0)), PUBLIC.TO_INTERVAL_UDF(CAST(COLUMNA AS TIME(0)) !!!RESOLVE EWI!!! /*** SSC-EWI-0033 - FORMAT 'HHMISS' REMOVED, SEMANTIC INFORMATION NOT FOUND. ***/!!!))
    FROM
    TIMEDIFF;
Copy

JULIAN_TO_DATE_UDF

定义

一个用户定义的函数 (UDF),用于将儒略日期格式 (YYYYDDD) 转换为标准的公历日期 (YYYY-MM-DD)。

PUBLIC.JULIAN_TO_DATE_UDF(JULIAN_DATE CHAR(7))
Copy

参数

JULIAN_DATE CHAR – 一种字符数据类型,用于以儒略格式存储日期。

要从儒略格式转换的日期。

返回

返回儒略日期的日期表示,如果无法执行转换,则返回 null。

使用示例

输入:

SELECT JULIAN_TO_DATE_UDF('2022045');
Copy

输出:

'2022-02-14'
Copy

迁移示例

输入:

SELECT TO_DATE('2020002', 'YYYYDDD');
Copy

输出:

SELECT
PUBLIC.JULIAN_TO_DATE_UDF('2020002');
Copy

FIRST_DAY_JANUARY_OF_ISO_UDF

定义

ISO 日历年中一月的第一天,PUBLIC.YEAR_BEGIN_ISO_UDF 函数使用它来计算其结果。

FUNCTION PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

使用 ISO 日历年格式表示 1 月 1 日的日期。

返回

代表指定 ISO 日历年的 1 月 1 日的日期。

使用示例

输入:

SELECT PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(DATE '2022-01-01');
Copy

输出:

2021-01-01
Copy

TIMESTAMP_DIFFERENCE_UDF

定义

如何使用用户定义的函数减去两个日期 (UDF)

PUBLIC.TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR)
Copy

Teradata 和 Snowflake 日期时间减法之间的区别

Teradata 和 Snowflake 使用不同的方法来计算日期和时间。它们在语法、输出数据类型和精度级别上都有不同。

  • 语法: 在 Teradata 中,DATE、TIMESTAMP 和 TIME 减法使用减号和间隔来指定结果的格式。有关更多详细信息,请参阅 https://docs.teradata.com/r/w19R4KsuHIiEqyxz0WYfgA/7kLLsWrP0kHxbk3iida0mA (https://docs.teradata.com/r/w19R4KsuHIiEqyxz0WYfgA/7kLLsWrP0kHxbk3iida0mA)。Snowflake 使用三个函数以不同的方式处理这些操作:

    • DATEDIFF(适用于所有日期类型)

    • TIMESTAMPDIFF

    • TIMEDIFF 每个函数都需要两个日期进行比较,并需要返回日期部分。对于 DATE 类型,您还可以使用减号,其将以天为单位返回差值。

  • 返回类型: Teradata 返回各种间隔类型(请参阅 https://www.docs.teradata.com/r/T5QsmcznbJo1bHmZT2KnFw/z~5iW7rYVstcmNYbd6Dsjg (https://www.docs.teradata.com/r/T5QsmcznbJo1bHmZT2KnFw/z~5iW7rYVstcmNYbd6Dsjg))。Snowflake 的函数返回一个表示单位数的整数。有关详细信息,请参阅 https://docs.snowflake.cn/en/sql-reference/functions/datediff.html

  • 舍入: DATEDIFF 处理日期部分的方式可能会产生与 Teradata 不同的结果。查看 https://docs.snowflake.cn/en/sql-reference/functions/datediff.html#usage-notes 了解具体的舍入行为。

警告

执行日期计算时,由于舍入或时区差异,结果可能会相差一天。

参数

MINUEND:表示将作为被减数的时间戳值

用作减法起点的日期。

SUBTRAHEND 是将从另一个时间戳中减去的时间戳值。

该日期已移除。

INPUT_PART 是 VARCHAR 类型的变量(可变长度的字符串)

需要返回的部分。

返回

根据指定的 INPUT_PART 参数格式化字符串值。

示例

输入:

select (timestampColumn1 - timestampColumn2 YEAR) from tableName;
Copy
SELECT
(
PUBLIC.TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'YEAR')) from
tableName;
Copy

FIRST_DAY_OF_MONTH_ISO_UDF

定义

用户定义的函数 (UDF) 以 ISO 格式 (YYYY-MM-DD) 返回给定月份的第一天。

PUBLIC.FIRST_DAY_OF_MONTH_ISO_UDF(YEAR NUMBER, MONTH NUMBER)
Copy

参数

YEAR 是一种数字数据类型,用于存储四位数的年份值。

代表日历年(例如 2023 年)的数值。

MONTH 代表月份的数值 (1-12)

代表日历月份的数值 (1-12)。

返回

以 ISO 格式 (YYYY-MM-DD) 返回当月的第一天。

示例

备注

此 UDF 是一个辅助函数,用于 DAYNUMBER_OF_MONTH_UDF 函数。

INT_TO_DATE_UDF

定义

将数值转换为日期的 UDF(Teradata 兼容函数)

PUBLIC.INT_TO_DATE_UDF(NUMERIC_EXPRESSION INTEGER)
Copy

参数

NUMERIC_EXPRESSION 表示计算结果为整数的数值或表达式

以特定格式表示日期的值,例如 YYYY-MM-DD

返回

转换为日期格式的数字。

示例

输入:

SELECT * FROM table1
WHERE date_column > 1011219
Copy

输出:

SELECT
* FROM
table1
WHERE date_column > PUBLIC.INT_TO_DATE_UDF( 1011219);
Copy

NULLIFZERO_UDF

定义

将数据中的零值替换为 NULL,以防止除零错误。

PUBLIC.NULLIFZERO_UDF(NUMBER_TO_VALIDATE NUMBER)
Copy

参数

NUMBER_TO_VALIDATE NUMBER

需要验证的数字。

返回

如果输入数字为零,则返回 null;否则,返回原始数字。

使用示例

SELECT NULLIFZERO_UDF(0);
Copy

输出:

NULL
Copy

DATE_LONG_UDF

定义

将日期转换为“星期几, 月份 DD, YYYY”格式(例如,“Monday, January 01, 2024”)。此格式与 Teradata 的 DL 日期格式元素相匹配。

PUBLIC.DATE_LONG_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

日期应以长日期格式显示(例如:“September 15, 2023”)。

返回

一个表示 Teradata DL 格式元素的 VARCHAR 数据类型。

使用示例

输入:

SELECT PUBLIC.DATE_LONG_UDF(DATE '2021-10-26');
Copy

输出:

'Tuesday, October 26, 2021'
Copy

TD_MONTH_OF_CALENDAR_UDF

定义

用户定义的函数 (UDF),可直接取代 Teradata 的 TD_MONTH_OF_CALENDAR (https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/SQL-Date-and-Time-Functions-and-Expressions/Calendar-Functions/td_month_of_calendar) 函数,提供相同的功能。

PUBLIC.TD_MONTH_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算自 1900 年 1 月 1 日以来经过的月数的日期。

返回

一个整数,表示 1900 年 1 月 1 日到指定日期之间的月数

迁移示例

输入:

SELECT TD_MONTH_OF_CALENDAR(DATE '2023-11-30')
Copy

输出:

SELECT
PUBLIC.TD_MONTH_OF_CALENDAR_UDF(DATE '2023-11-30');
Copy

MONTH_NAME_LONG_UDF

定义

一种用户定义的函数 (UDF),用于将时间戳转换为相应的完整月份名称。

PUBLIC.MONTH_NAME_LONG_UDF(INPUT_DATE TIMESTAMP)
Copy

参数

INPUT DATE

应转换为显示完整月份名称的时间戳。

返回

英文的月份名称。

TD_DAY_OF_CALENDAR_UDF

定义

一个用户定义的函数 (UDF),用于重现 Teradata 的 TO_DAY_OF_CALENDAR 功能。

PUBLIC.TD_DAY_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算自 1900 年 1 月 1 日以来经过的天数的日期。

返回

一个整数,表示 1900 年 1 月 1 日到 INPUT 日期之间的天数

迁移示例

输入:

SELECT td_day_of_calendar(current_date)
Copy

输出:

SELECT
PUBLIC.TD_DAY_OF_CALENDAR_UDF(CURRENT_DATE());
Copy

PERIOD_TO_TIME_UDF

定义

该函数将 Teradata PERIOD 值转换为 TIME 值,维持 Teradata 的类型转换行为。

PERIOD_TO_TIME_UDF(PERIOD_VAL VARCHAR(22))
Copy

参数

PERIOD_VAL 表示时间段值

需要转换的时间段。

返回

该函数返回一个表示 PERIODTIME 值。如果无法完成转换,则返回 null。

使用示例

输入:

SELECT PERIOD_TO_TIME_UDF(PERIOD_UDF(CURRENT_TIME()));
Copy

输出:

08:42:04
Copy

INSTR_UDF (STRING, STRING, DOUBLE, DOUBLE)

警告

此用户定义的函数 (UDF) 接受 四个 输入参数

定义

查找 search_string 出现在 source_string 中的所有实例。

PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION DOUBLE, OCCURRENCE DOUBLE)
Copy

参数

SOURCE_STRING 表示需要处理的输入字符串

将要搜索的文本字符串。

SEARCH_STRING 是您要搜索的文本值。

该函数将查找和匹配的文本模式。

POSITION DOUBLE – 一种数字数据类型,以双精度存储十进制数字。

文本中开始搜索的位置(从位置 1 开始)。

OCCURRENCE DOUBLE – 一种数字数据类型,表示事件发生的次数,存储为双精度浮点数。

文本中开始搜索的位置(从位置 1 开始)。

返回

在源字符串中找到指定文本的索引位置。

使用示例

输入:

SELECT INSTR_UDF('CHOOSE A CHOCOLATE CHIP COOKIE','CH',2,2);
Copy

输出:

20
Copy

ROUND_DATE_UDF

定义

一种用户定义的函数 (UDF),通过将时间部分舍入到指定单位 (UNIT_TO_ROUND_BY) 来处理 DATE_VALUE。此函数类似于 Teradata 的 ROUND(date) 函数。

PUBLIC.ROUND_DATE_UDF(DATE_TO_ROUND TIMESTAMP_LTZ, UNIT_TO_ROUND_BY VARCHAR(5))
Copy

参数

DATE_TO_ROUND TIMESTAMP_TZ(包含需要舍入的时区信息的时间戳值)

需要舍入的日期值。

UNIT_TO_ROUND_BY VARCHAR – 指定用于舍入的时间单位

用于舍入日期的时间单位。

返回

返回舍入到指定时间单位的日期。UNIT_TO_ROUND_BY 参数决定如何舍入日期。

迁移示例

输入:

SELECT ROUND(CURRENT_DATE, 'RM') RND_DATE
Copy

输出:

SELECT
PUBLIC.ROUND_DATE_UDF(CURRENT_DATE(), 'RM') RND_DATE;
Copy

SUBSTR_UDF (STRING, FLOAT, FLOAT)

警告

这是一个用户定义的函数 (UDF),接受 三个 参数

定义

使用起始和结束位置从指定字符串中检索部分文本。

PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT, LENGTH FLOAT)
Copy

参数

BASE_EXPRESSION 是一个定义基本表达式的字符串参数。

要从中提取一部分的源文本。

START_POSITION 是一个定义初始位置的浮点数。

要开始从字符串中提取字符的位置。

LENGTH 是一个表示长度值的浮点数。

要开始从字符串中提取字符的位置。

返回

必须包含的子字符串。

使用示例

输入:

SELECT 
    PUBLIC.SUBSTR_UDF('ABC', -1, 1),
    PUBLIC.SUBSTR_UDF('ABC', -1, 2),
    PUBLIC.SUBSTR_UDF('ABC', -1, 3),
    PUBLIC.SUBSTR_UDF('ABC', 0, 1),
    PUBLIC.SUBSTR_UDF('ABC', 0, 2);
Copy

输出:

'','','A','','A'
Copy

GETQUERYBANDVALUE_UDF (VARCHAR)

警告

这是一个用户定义的函数 (UDF),接受 一个 参数

定义

从存储在交易、会话或配置文件查询区段中的名称-值对中返回一个值。

GETQUERYBANDVALUE_UDF(SEARCHNAME VARCHAR)
Copy

参数

SEARCHNAME VARCHAR – 一种 VARCHAR 类型的变量,用于存储搜索词或名称。– 一种 VARCHAR 类型的变量,用于存储搜索词或名称。

要在键值对中搜索的名称。

返回

会话查询区段的“名称”键值,如果不存在,则为 null。

使用示例

输入:

ALTER SESSION SET QUERY_TAG = 'user=Tyrone;role=security';
SELECT GETQUERYBANDVALUE_UDF('role');
Copy

输出:

security
Copy

迁移示例

输入:

SELECT GETQUERYBANDVALUE(1, 'group');
Copy

输出:

/** MSC-ERROR - MSCEWI2084 - TRANSACTION AND PROFILE LEVEL QUERY TAGS NOT SUPPORTED IN SNOWFLAKE, REFERENCING SESSION QUERY TAG INSTEAD **/
SELECT GETQUERYBANDVALUE_UDF('group');
Copy

TD_WEEK_OF_YEAR_UDF

定义

用户定义的函数 (UDF),用于计算给定日期在该年内所属的完整周数。此函数提供的功能与 Teradata 的 TD_WEEK_OF_YEARWEEKNUMBER_OF_YEAR 函数相同。

PUBLIC.TD_WEEK_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算周数的日期。

返回

一个数值,表示指定日期属于一年中的哪一周。

使用示例

输入:

SELECT PUBLIC.WEEK_OF_YEAR_UDF(DATE '2024-05-10'),
PUBLIC.WEEK_OF_YEAR_UDF(DATE '2020-01-03')
Copy

输出:

18, 0
Copy

EXTRACT_TIMESTAMP_DIFFERENCE_UDF

备注

为提高可读性,我们简化了代码示例,只显示相关程度最高的部分。

定义

MINUEND 中减去 SUBTRAHEND 的结果中检索“数据”部分

PUBLIC.EXTRACT_TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR, EXTRACT_PART VARCHAR)
Copy

Teradata 和 Snowflake 日期时间提取之间的区别

Teradata 和 Snowflake 函数可能有不同的参数要求,并返回不同的数据类型。

  • 参数: Teradata 和 Snowflake 的 EXTRACT 函数之间的主要区别在于 Snowflake 仅适用于日期和时间,而 Teradata 也支持间隔。有关更多详细信息,请参阅 Snowflake 的 EXTRACT 函数文档 和 Teradata 的 EXTRACT 函数文档 (https://docs.teradata.com/r/kmuOwjp1zEYg98JsB8fu_A/SIkE2wnHyQBnU4AGWRZSRw)。

  • 返回类型: 这项函数的返回值有所不同:Teradata 的 EXTRACT 返回一个整数或小数 (8, 2),而 Snowflake 的 EXTRACT 则返回一个代表所请求的日期时间部分的数字。

Teradata 和 Snowflake 函数可能具有不同的输入参数和输出类型。

参数

MINUEND TIMESTAMP

用作减法起点的日期。

SUBTRAHEND:将从另一个时间戳中减去的时间戳值

该日期已移除。

INPUT_PART VARCHAR

格式化的 varchar 必须与原始请求的部分相匹配(与 TIMESTAMP_DIFERENCE INPUT_PART 相同),并且必须是以下内容之一:

  • 'DAY TO HOUR'

  • 'DAY TO MINUTE'

  • 'DAY TO SECOND'

  • 'DAY TO MINUTE'

  • 'HOUR TO MINUTE'

  • 'HOUR TO SECOND'

  • 'MINUTE TO SECOND'

EXTRACT_PART 是一种 VARCHAR 数据类型,表示字符串中提取的部分。

提取的时间单位必须是以下值之一:“DAY”“HOUR”“MINUTE”“SECOND”。请求的时间单位应在输入的时间间隔内。

返回

提取过程中包含的请求数。

示例

输入:

select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
Copy

输出:

SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
from
tableName;
Copy

JSON_EXTRACT_DOT_NOTATION_UDF

定义

一种用户定义的函数 (UDF),允许您使用点表示法查询 JSON 对象,类似于在 JavaScript 或 Python 中访问嵌套属性的方式。

JSON_EXTRACT_DOT_NOTATION_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING)
Copy

Teradata JSON 实体引用(点表示法)和 Snowflake JSON 查询方法之间的区别。

Teradata 和 Snowflake 使用不同的方法来遍历 JSON 数据。Teradata 使用基于 JavaScript 的方法,包括点表示法、数组索引以及通配符访问和双点表示法等特殊运算符。相比之下,Snowflake 的 JSON 遍历功能更为有限,仅支持直接成员访问和数组索引。

参数

JSON_OBJECT:一种表示 JSON 对象的数据类型,可以包含不同数据类型的嵌套键值对。

包含要提取的值的 JSON 对象。

JSON_PATH:一个字符串参数,用于指定从 JSON 文档中提取数据的路径

在 JSON_OBJECT 中可以找到值的位置,使用 JSON 路径表示法指定。

返回

JSON_OBJECT 中与指定 JSON_PATH 匹配的数据元素。

迁移示例

输入:

SELECT CAST(varcharColumn AS JSON(2000))..name FROM variantTest;
Copy

输出:

SELECT
JSON_EXTRACT_DOT_NOTATION_UDF(CAST(varcharColumn AS VARIANT), '$..name')
FROM
variantTest;
Copy

WEEK_OF_MONTH_UDF

定义

计算特定日期属于该月的哪一周。

PUBLIC.WEEK_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于确定其属于该月的哪一周的日期。

返回

一个 VARCHAR 列,显示特定日期属于当月的哪一周。

使用示例

输入:

SELECT PUBLIC.WEEK_OF_MONTH_UDF(DATE '2021-10-26');
Copy

输出:

'4'
Copy

DAYNAME_LONG_UDF (TIMESTAMP_TZ)

警告

这是一个用户定义的函数 (UDF),接受 一个 参数

定义

一个 UDF,创建 DAYNAME_LONG_UDF 函数的变体,该函数返回首字母大写的星期数名称(默认格式)。

PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

您想要用来获取星期几的日期。

返回

返回一个包含一周中某一天全名的字符串。

使用示例

输入:

SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2022-06-30');
Copy

输出:

'Thursday'
Copy

INTERVAL_TO_MONTHS_UDF

定义

将时间间隔转换为月。

PUBLIC.INTERVAL_TO_MONTHS_UDF
(INPUT_VALUE VARCHAR())
Copy

参数

INPUT_VALUE VARCHAR

要更改为月的时间段。

返回

要处理的月数,指定为整数。

GETQUERYBANDVALUE_UDF (VARCHAR, FLOAT, VARCHAR)

警告

此用户定义的函数 (UDF) 接受三个参数。

定义

从存储在交易、会话或配置文件查询区段中的名称-值对中返回一个值。该值与查询区段中的特定名称相关联。

GETQUERYBANDVALUE_UDF(QUERYBAND VARCHAR, SEARCHTYPE FLOAT, SEARCHNAME VARCHAR)
Copy

参数

QUERYBAND 是一种 VARCHAR 数据类型,用于存储查询区段信息。

查询区段将交易、会话和配置文件查询区段合并为一个字符串。

SEARCHTYPE 是一种浮点数数据类型。

搜索匹配对的最大深度。

0 表示与任意输入相匹配的通配符值。

交易代表数据库中的单个工作单元。

会话对象代表与 Snowflake 的连接。

3 = 创建配置文件。

SEARCHNAME VARCHAR

要在键值对中搜索的名称。

返回

返回层次结构中指定级别的“名称”键的值。如果未找到任何值,则返回 null。

使用示例

输入:

SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'account');
SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 2, 'account');
SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'role');
SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 1, 'role');
Copy

输出:

      Matt
      SaraDB
      DbAdmin
      NULL
Copy

迁移示例

输入:

SELECT GETQUERYBANDVALUE('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'account')
Copy

输出:

WITH
--** MSC-WARNING - MSCEWI2078 - THE EXPAND ON CLAUSE FUNCTIONALITY IS TRANSFORMED INTO A CTE BLOCK **
ExpandOnCTE AS
(
SELECT
PUBLIC.EXPAND_ON_UDF('ANCHOR_SECOND', VALUE, duration) bg
FROM
project,
TABLE(FLATTEN(PUBLIC.ROW_COUNT_UDF(PUBLIC.DIFF_TIME_PERIOD_UDF('ANCHOR_SECOND', duration))))
)
SELECT NORMALIZE emp_id,
duration
FROM
project,
ExpandOnCTE;
Copy

JULIAN_DAY_UDF

定义

计算 Julian 日数,该数字表示自公元前 (BCE) 4713 年 1 月 1 日以来的连续天数。Julian 日用于天文学和日历计算。

PUBLIC.JULIAN_DAY_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

将转换为 Julian 日数的日期。

返回

一个 varchar 值,表示计算出的 Julian 日期。

使用示例

输入:

SELECT PUBLIC.JULIAN_DAY_UDF(DATE '2021-10-26');
Copy

输出:

'2459514'
Copy

WEEKNUMBER_OF_MONTH_UDF

定义

从给定日期确定月份。

PUBLIC.WEEKNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算月数的日期。

返回

代表给定日期的月份 (1-12) 的数值。

使用示例

输入:

SELECT PUBLIC.WEEKNUMBER_OF_MONTH_UDF(DATE '2022-05-21')
Copy

输出:

3
Copy

JSON_EXTRACT_UDF

定义

一个用户定义的函数 (UDF),用于模仿 JSONExtractJSONExtractValueJSONExtractLargeValue 函数的行为。此 UDF 允许您从 JSON 对象中提取多个值。

JSON_EXTRACT_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING, SINGLE_VALUE BOOLEAN)
Copy

参数

JSON_OBJECT 是一种以结构化格式存储 JSON 格式数据的数据类型。

包含要提取的值的 JSON 对象。

JSON_PATH:一个字符串,用于指定从 JSON 文档中提取数据的路径

在 JSON_OBJECT 中可以找到所需值的位置,使用 JSON 路径表示法指定。

SINGLE_VALUE:一个布尔标志,用于指示是返回单个值还是多个值。

BOOLEAN 参数:当设置为 true 时,返回单个值(JSONExtractValue 和 JSONExtractLargeValue 函数必需)。当设置为 false 时,返回值数组(用于 JSONExtract)。

返回

在 JSON 对象的指定 JSON 路径中找到的数据值。

迁移示例

输入:

SELECT
    Store.JSONExtract('$..author') as AllAuthors
FROM BookStores;
Copy

输出:

SELECT
    JSON_EXTRACT_UDF(Store, '$..author', FALSE) as AllAuthors
    FROM
    BookStores;
Copy

COMPUTE_EXPAND_ON_UDF

定义

确定如何根据指定的时间段类型扩展数据。

PUBLIC.COMPUTE_EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD TIMESTAMP, PERIODTYPE STRING)
Copy

参数

TIME STRING

锚点中使用的时间戳。

SEQ 序列号

每行计算的执行顺序。

PERIOD 表示指明特定时间点的时间戳值。

指定时间段的日期。

PERIODTYPE 是一个字符串值,用于定义时间段的类型。

用于计算的时间段(“BEGIN”或“END”)

返回

一个时间戳,表示何时处理 EXPAND-ON 操作中的每一行。

示例

警告

此 UDF 是一个派生函数,扩展了 EXPAND_ON_UDF 的功能。

WEEK_NUMBER_OF_QUARTER_UDF

定义

返回指定日期在当前季度内所属的周数。此函数使用 ISO 日历系统,遵循与 Teradata 的 WEEKNUMBER_OF_QUARTER(DATE, 'ISO') 函数相同的行为。

PUBLIC.WEEK_NUMBER_OF_QUARTER_UDF(INPUT TIMESTAMP_TZ)
Copy

参数

INPUT TIMESTAMP_TZ

用于计算其属于该季度的哪一周的日期。

返回

一个整数,表示引用的是季度中的哪一周 (1-13)。

使用示例

输入:

SELECT WEEK_NUMBER_OF_QUARTER_UDF(DATE '2023-01-01'),
WEEK_NUMBER_OF_QUARTER_UDF(DATE '2022-10-27')
Copy

输出:

1, 4
Copy

YEAR_END_ISO_UDF

定义

用户定义的函数 (UDF),使用 ISO 日历标准计算给定日期当年的最后一天,类似于 Teradata 的 TD_YEAR_END 函数。

PUBLIC.YEAR_END_ISO_UDF(INPUT date)
Copy

参数

INPUT DATE

根据 ISO 日历标准,该日期代表当年的最后一天。

返回

根据 ISO 日历系统,当年的最后一天。

使用示例

输入:

SELECT  PUBLIC.YEAR_END_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_END_ISO_UDF(DATE '2022-04-12');
Copy

输出:

2022-01-02, 2023-01-01
Copy

INSERT_CURRENCY_UDF

定义

在数字的第一位数字前直接插入货币符号,确保货币符号和数字之间没有空格或符号。

PUBLIC.INSERT_CURRENCY_UDF(INPUT VARCHAR, CURRENCYINDEX INTEGER, CURRENCYVALUE VARCHAR)
Copy

参数

INPUT VARCHAR

转换需要货币格式的数值时,TO_CHAR 的输出。

CURRENCYINDEX 是一个整数值,代表一种货币的指数。

应在数组中插入货币的位置。

CURRENCYVALUE:一个存储货币值的 VARCHAR 字段

将用作货币值的文本。

返回

一个 varchar 字段,其中包含定义位置的货币文本。

使用示例

输入:

SELECT PUBLIC.INSERT_CURRENCY_UDF(to_char(823, 'S999999'), '1', 'CRC');
Copy

输出:

'+CRC823'
Copy

INSTR_UDF (STRING, STRING, INT)

警告

此用户定义的函数 (UDF) 接受三个参数。

定义

查找 search_string 出现在 source_string 中的所有实例。

PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION INT)
Copy

参数

SOURCE_STRING 表示将用作输入的字符串值

将要搜索的文本。

SEARCH_STRING 是您要搜索的文本值。

该函数将查找和匹配的文本模式。

POSITION 是一个整数数据类型,表示序列中的位置。

在文本中开始搜索的位置(从位置 1 开始)。

返回

原始字符串中找到匹配项的位置。

使用示例

输入:

SELECT INSTR_UDF('FUNCTION','N', 3);
Copy

输出:

8
Copy
语言: 中文