SnowConvert: Teradataの関数参照¶
QUARTERNUMBER_OF_YEAR_UDF¶
定義¶
Teradataの QUARTERNUMBER_OF_YEAR_UDF(date, 'ISO') 関数と同様に、 ISO 暦年に従って、指定された日付の四半期数を計算する UDF (ユーザー定義関数)。
PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
時間STAMP_TZ
四半期の数を抽出する方法。
戻り値¶
日付がその年のどの四半期にあたるかを示す整数(1~4)。
使用例¶
入力:
SELECT PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2022-01-01'),
PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2025-12-31');
出力:
4, 1
DAYNUMBER_OF_YEAR_UDF¶
定義¶
指定されたタイムスタンプの年内の日数を返します。日数は1から365(うるう年は366)までです。この関数は、 DAYNUMBER_OF_YEAR(DATE, 'ISO') と同じ動作をします。
PUBLIC.DAYNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
日付からその年の日数を取得します。
戻り値¶
1から371までの整数。
例¶
入力:
SELECT DAYNUMBER_OF_YEAR(CURRENT_DATE,'ISO');
出力:
SELECT
PUBLIC.DAYNUMBER_OF_YEAR_UDF(CURRENT_DATE());
SUBSTR_UDF (STRING, FLOAT)¶
警告
このユーザー定義関数(UDF)は2つのパラメーターを受け付けます(オーバーロード関数)。
定義¶
開始位置と長さを指定して、指定した文字列からテキストの一部を取り出します。
PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT)
パラメーター¶
BASE_EXPRESSION
は文字列パラメーターで、操作の基本式を定義します。
部分を抽出するためのソーステキスト。
START_POSITION
- 入力文字列の開始位置を指定する浮動小数点数。
文字列から文字の抽出を開始する位置。
戻り値¶
含める必要のある部分文字列。
移行例¶
入力:
SELECT SUBSTRING('Hello World!' FROM -2);
出力:
SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
CHKNUM_UDF¶
定義¶
文字列が有効な数値を含んでいるかどうかを検証します。
PUBLIC.CHKNUM_UDF(NUM STRING);
パラメーター¶
NUM
数値を表す文字列
検証が必要な文字列。
戻り値¶
入力パラメーターが有効な数値の場合は、1を返します。入力が有効な数値でない場合(テキストや特殊文字など)は、0を返します。
例¶
SELECT CHKNUM('1032');
出力:
SELECT
PUBLIC.CHKNUM_UDF('1032');
TD_YEAR_END_UDF¶
定義¶
指定した日付の最終日を返す、Teradataの TD_YEAR_END(DATE) または TD_YEAR_END(DATE, 'COMPATIBLE') 関数を再現する UDF (ユーザー定義関数)。
PUBLIC.TD_YEAR_END_UDF(INPUT date)
パラメーター¶
INPUT
DATE
現在の年の最終日を取得します。
戻り値¶
12月の最終日(12月31日)。
使用例¶
入力:
SELECT PUBLIC.TD_YEAR_END_UDF(DATE '2022-01-01'),
PUBLIC.TD_YEAR_END_UDF(DATE '2022-04-12');
出力:
2022-12-31, 2022-12-31
PERIOD_OVERLAPS_UDF¶
定義¶
OVERLAPS OPERATOR の機能を実装するユーザー定義関数(UDF)。この関数は2つ以上の期間を比較し、重複する期間があるかどうかを判定します。
PERIOD_OVERLAPS_UDF(PERIODS ARRAY)
パラメーター¶
PERIODS
は期間を含む配列です。
比較されるすべての期間式。
戻り値¶
セット内のすべての期間に少なくとも1つの共通点がある場合は(重複していれば) TRUE、それ以外の場合は FALSE。
移行例¶
SELECT
PERIOD(DATE '2009-01-01', DATE '2010-09-24')
OVERLAPS
PERIOD(DATE '2009-02-01', DATE '2009-06-24');
出力:
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 ***/!!!;
WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF¶
定義¶
指定した日付が現在の四半期のどの週番号に該当するかを計算します。
PUBLIC.WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
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')
出力:
5, 1
ROMAN_NUMERALS_MONTH_UDF¶
定義¶
日付を対応する月のローマ数字に変換します。
PUBLIC.ROMAN_NUMERALS_MONTH_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
月を抽出する入力日付。
戻り値¶
varchar
は、指定した日付から抽出した月を表します。
使用例¶
入力:
SELECT PUBLIC.ROMAN_NUMERALS_MONTH_UDF(DATE '2021-10-26');
出力:
'X'
TD_YEAR_BEGIN_UDF¶
定義¶
TD_YEAR_BEGIN または TD_YEAR_BEGIN(DATE, 'COMPATIBLE') の動作を模倣し、指定された日付の年の元日を返すユーザー定義関数(UDF)。
PUBLIC.TD_YEAR_BEGIN_UDF(INPUT DATE)
パラメーター¶
INPUT
DATE
現在の年の元日を取得します。
戻り値¶
1月1日。
使用例¶
入力:
SELECT TD_YEAR_BEGIN(DATE '2022-01-01', 'COMPATIBLE'),
TD_YEAR_BEGIN(DATE '2022-04-12');
出力:
2022-01-01, 2022-01-01
FULL_MONTH_NAME_UDF¶
定義¶
月の完全な名前を、すべて大文字、すべて小文字、または初めを大文字にした形式から選択して返します。
PUBLIC.FULL_MONTH_NAME_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
パラメーター¶
INPUT
TIMESTAMP_TZ
日付形式は月名を表示する必要があります。
RESULTCASE
VARCHAR
結果を表示する形式。有効なオプションは「uppercase」、「lowercase」、または「firstOnly」です。
戻り値¶
月の完全な名前を含む 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');
出力:
OCTOBER
october
October
TO_BYTES_HEX_UDF¶
定義¶
HEX関数は、10進数(基数10)を16進数(基数16)に変換します。
TO_BYTES_HEX_UDF(INPUT FLOAT)
パラメーター¶
INPUT
は浮動小数点数のパラメーターです。
16進数形式に変換される数値。
戻り値¶
16進数値を表す文字列。
使用例¶
入力:
SELECT TO_BYTES_HEX_UDF('448');
出力:
01c0
PERIOD_INTERSECT_UDF¶
定義¶
P_INTERSECT 演算子を再現するユーザー定義関数(UDF)。この関数は2つ以上の期間を比較して重なる部分を識別し、その間の共通の時間間隔を返します。
ソース関数の詳細については、 ドキュメント をご参照ください。
PERIOD_INTERSECT_UDF(PERIODS ARRAY)
パラメーター¶
PERIODS
は期間を含む配列です。
比較が必要なすべての期間式。
戻り値¶
2つの期間が交差する、または共通の日付を持つ区間。
移行例¶
入力:
SELECT
PERIOD(DATE '2009-01-01', DATE '2010-09-24')
P_INTERSECT
PERIOD(DATE '2009-02-01', DATE '2009-06-24');
出力:
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 ***/!!!;
INTERVAL_TO_SECONDS_UDF¶
定義¶
時間間隔を秒に変換します。
PUBLIC.INTERVAL_TO_SECONDS_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR())
パラメーター¶
INPUT_PART
は、入力データを格納する VARCHAR タイプの変数です。
秒に変換される時間の期間。
INPUT_VALUE
VARCHAR - テキストデータを受け付ける入力パラメーター。 - テキストデータを受け付ける入力パラメーター。
変換する時間間隔のタイプ。例としては、「DAY」や「DAY TO HOUR」などの有効な間隔タイプがあります。
戻り値¶
時間間隔を秒単位で表す10進数。
TIMESTAMP_ADD_UDF¶
定義¶
2つのタイムスタンプを1つの値に結合します。
PUBLIC.TIMESTAMP_ADD_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
パラメーター¶
FIRST_DATE
は、日付と時刻の両方の情報を含むタイムスタンプフィールドで、タイムゾーンをサポートしています(TIMESTAMP_LTZ)
これが追加された最初の日付。
SECOND_DATE
はタイムゾーン情報を含むタイムスタンプ列です(TIMESTAMP_LTZ)(ローカルタイムゾーンを含むタイムスタンプ)
アイテムが2回目に追加された日付。
戻り値¶
入力された日付パラメーターを組み合わせて生成されたタイムスタンプ。
INTERVAL_MULTIPLY_UDF¶
定義¶
時間間隔の乗算を実行するユーザー定義関数(UDF)。
PUBLIC.INTERVAL_MULTIPLY_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_MULT INTEGER)
パラメーター¶
INPUT_PART
は、入力データを格納する VARCHAR タイプの変数です。
乗算に使用する値。「YEAR TO MONTH」として指定します。
INPUT_VALUE
VARCHAR
乗算する間隔。
INPUT_MULT
は整数パラメーターで、入力値の乗数の役割を果たします。
乗算操作で使用される数値。
戻り値¶
出力は、時間間隔に数値を乗じて計算されます。
移行例¶
入力:
SELECT INTERVAL '6-10' YEAR TO MONTH * 8;
出力:
SELECT
PUBLIC.INTERVAL_MULTIPLY_UDF('YEAR TO MONTH', '6-10', 8);
TD_DAY_OF_WEEK_UDF¶
定義¶
Teradataの TD_DAY_OF_WEEK
機能を再現するユーザー定義関数(UDF)。オリジナルのTeradata関数の詳細については、 こちら をご参照ください。
PUBLIC.TD_DAY_OF_WEEK_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
曜日を取得する日付。
戻り値¶
曜日を表す1から7までの整数。ここで、
1 = 日曜日
2 = 月曜日
3 = 火曜日
4 = 水曜日
5 = 木曜日
6 = 金曜日
7 = 土曜日
移行例¶
入力:
SELECT td_day_of_week(DATE '2022-03-02');
出力:
SELECT
PUBLIC.TD_DAY_OF_WEEK_UDF(DATE '2022-03-02');
ISO_YEAR_PART_UDF¶
定義¶
指定された日付から ISO 暦年を計算します。残す桁数を指定すると、結果を短くすることができます。
PUBLIC.ISO_YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
パラメーター¶
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);
出力:
'021'
'21'
'1'
DIFF_TIME_PERIOD_UDF¶
定義¶
指定した時間単位パラメーターに基づいて、2つの日付間の時間間隔を計算します。
PUBLIC.DIFF_TIME_PERIOD_UDF(TIME STRING, PERIOD VARCHAR(50))
パラメーター¶
TIME
は、時、分、秒、および秒の端数で時間値を格納するために使用されるデータ型です。値は、文字列として格納されます。
アンカーポイントとして使用されるタイムスタンプ。
PERIOD
期間を表すテキストフィールド(VARCHAR)
拡張に使用される期間列。
戻り値¶
2つの日付間の時間間隔を示す数値。
使用例¶
入力:
SELECT DIFF_TIME_PERIOD_UDF('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000');
出力:
5
WEEK_NUMBER_OF_QUARTER_ISO_UDF¶
定義¶
ISO カレンダー標準を使用して、日付が四半期内のどの週番号に該当するかを計算します。この関数は、Teradataの WEEKNUMBER_OF_QUARTER(DATE, 'ISO')
関数と同じ動作をします。
PUBLIC.WEEK_NUMBER_OF_QUARTER_ISO_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
四半期のどの週に該当するかを計算するために使用される日付。
戻り値¶
四半期のどの週(1~13)を表すかを示す整数。
使用例¶
入力:
SELECT WEEKNUMBER_OF_QUARTER(DATE '2022-05-01', 'ISO'),
WEEKNUMBER_OF_QUARTER(DATE '2022-07-06', 'ISO')
出力:
SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
NVP_UDF¶
定義¶
Teradataの NVP 関数 と同じ機能があります。
NVP_UDF(INSTRING VARCHAR, NAME_TO_SEARCH VARCHAR, NAME_DELIMITERS VARCHAR, VALUE_DELIMITERS VARCHAR, OCCURRENCE FLOAT)
パラメーター¶
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);
出力:
orange chicken
MONTH_SHORT_UDF¶
定義¶
月の略称(3文字)を、大文字、小文字、または初めを大文字の選択した形式で返します。例: 「Jan」、「jan」、または「JAN」。
PUBLIC.MONTH_SHORT_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
パラメーター¶
INPUT
TIMESTAMP_TZ
省略された月名が表示されるようにフォーマットされた日付。
RESULTCASE
VARCHAR
使用する大文字と小文字の形式。有効なオプションは次のとおりです。
「uppercase」: テキストをすべて大文字に変換します
「lowercase」: テキストをすべて小文字に変換します
「firstOnly」: 最初の文字だけを大文字にします
戻り値¶
月名の省略形(「Jan」、「Feb」など)を含む varchar
。
使用例¶
入力:
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');
出力:
OCT
oct
Oct
DATE_TO_INT_UDF¶
定義¶
日付値を数値表現に変換する UDF (ユーザー定義関数)。Teradataの DATE-TO-NUMERIC 関数と類似しています。
PUBLIC.DATE_TO_INT_UDF(DATE_TO_CONVERT DATE)
パラメーター¶
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;
出力:
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;
PERIOD_UDF¶
定義¶
P_INTERSECT 演算子を再現するユーザー定義関数(UDF)。この関数は2つ以上の期間を比較して重なる部分を識別し、その間の共通の時間間隔を返します。
期間の開始値と終了値の文字列表現を作成します(TIMESTAMP
の場合は、日付と時刻情報の両方を格納するデータ型を表します。 TIME
、または DATE
の場合は、時刻情報を含まないカレンダーの日付(年、月、日)を格納するために使用されるデータ型です)。この関数は、Teradataの期間値コンストラクター関数をエミュレートします。出力文字列は、Snowflakeのデフォルトの PERIOD
値の形式に従います。出力の精度を調整するには、以下の方法があります。
セッションパラメーター
timestamp_output_format
を変更しますこの UDF の3パラメーターバージョンを使用します
ソース関数の詳細については、 Teradataドキュメント をご参照ください。
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)
パラメーター¶
TIMESTAMP
TimeStamp データ型は、日付と時刻の両方の要素を含む特定の時点を表します。
TIME
Timeデータ型は、日付要素のない特定の時刻を表します。
DATE
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');
出力:
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
DAYNAME_LONG_UDF (TIMESTAMP_TZ, VARCHAR)¶
警告
これはユーザー定義関数(UDF)で、 2つの 異なるタイプのパラメーター を受け付けます。
定義¶
平日の完全な曜日名を、大文字、小文字、または初めを大文字から選択した形式(例: 「MONDAY」、「monday」、または「Monday」)で返します。
PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
パラメーター¶
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');
出力:
'TUESDAY'
'tuesday'
'Tuesday'
TD_DAY_OF_WEEK_COMPATIBLE_UDF¶
定義¶
タイムスタンプを処理し、そのタイムスタンプがどの曜日にあたるかを判定します。この関数は、 DAYNUMBER_OF_WEEK(DATE, 'COMPATIBLE')
と動作が同じです。
PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
曜日を決定するために使用される入力日。
戻り値¶
曜日を表す1から7までの数値を返します。たとえば、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');
出力:
1, 6
JAROWINKLER_UDF¶
定義¶
Jaro-Winklerアルゴリズムを使って、2つの文字列がどれだけ似ているかを計算します。このアルゴリズムでは、0(まったく異なる)から1(同一)の間のスコアを与えます。
PUBLIC.JAROWINKLER_UDF (string1 VARCHAR, string2 VARCHAR)
パラメーター¶
タイプ VARCHAR の string1
処理するテキスト
タイプ VARCHAR の string2
処理するテキスト
戻り値¶
関数は0または1を返します。
使用例¶
入力:
SELECT PUBLIC.JAROWINKLER_UDF('święta', 'swieta')
出力:
0.770000
YEAR_BEGIN_ISO_UDF¶
定義¶
指定された日付の ISO 年の元日を計算する UDF。これは、 DAYOFWEEKISO
関数と PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF
を組み合わせて、その年の1月1日に最も近い月曜日を見つけます。この関数は、この月曜日を特定するために、日数を加算または減算します。
PUBLIC.YEAR_BEGIN_ISO_UDF(INPUT DATE)
パラメーター¶
INPUT
TIMESTAMP_TZ
ISO 暦基準による当年1月1日を表す日付。
戻り値¶
ISO 暦基準による1年の元日。
使用例¶
入力:
SELECT PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-04-12');
出力:
2021-01-04, 2022-01-03
YEAR_PART_UDF¶
定義¶
日付から年を抽出し、指定した桁数で切り捨てます。
PUBLIC.YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
パラメーター¶
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);
出力:
'021'
'21'
'1'
YEAR_WITH_COMMA_UDF¶
定義¶
日付から年を抽出し、1桁目と2桁目の間にコンマを追加します。たとえば、西暦が2023年の場合は、「2,023」を返します。
PUBLIC.YEAR_WITH_COMMA_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
年を抽出する入力日付。
戻り値¶
日付の値の年部分を、コンマ区切りのvarchar(テキスト)で返します。
使用例¶
入力:
SELECT PUBLIC.YEAR_WITH_COMMA_UDF(DATE '2021-10-26');
出力:
'2,021'
MONTHS_BETWEEN_UDF¶
定義¶
2つの日付間における月数の計算
MONTHS_BETWEEN_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
パラメーター¶
FIRST_DATE
は日付と時刻の両方の情報を含むタイムスタンプ列で、タイムゾーン(TIMESTAMP_LTZ)もサポートしています。
関数がデータ処理を開始する最初の日付。
SECOND_DATE
TIMESTAMP_LTZ
カウントを停止する日付を指定します。
戻り値¶
2つの日付間における月単位の期間。
使用例¶
入力:
SELECT MONTHS_BETWEEN_UDF('2022-02-14', '2021-02-14');
出力:
12
SECONDS_PAST_MIDNIGHT_UDF¶
定義¶
指定した時刻の午前0時からの経過秒数を計算します。
PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(INPUT TIME)
パラメーター¶
INPUT
TIME
この関数は、午前0時(00:00:00)から現在までの経過秒数を計算します。
戻り値¶
真夜中からの経過秒数を表す varchar
値。
使用例¶
入力:
SELECT PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(TIME'10:30:45');
出力:
'37845'
CHAR2HEXINT_UDF¶
定義¶
入力文字列の各文字を16進数で表した文字列を返します。
PUBLIC.CHAR2HEXINT_UDF(INPUT_STRING VARCHAR);
パラメーター¶
INPUT_STRING
はテキストデータを格納する VARCHAR タイプの変数です。
変換が必要な入力文字列。
戻り値¶
入力文字列を16進数で表した文字列を返します。
例¶
入力:
SELECT CHAR2HEXINT('1234') from t1;
出力:
SELECT
PUBLIC.CHAR2HEXINT_UDF('1234') from
t1;
ソース関数からの詳細情報¶
関数ドキュメントは、 Teradataドキュメント にあります。
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())
パラメーター¶
タイプ VARCHAR の INPUT_VALUE1
システムで処理される入力データ。
タイプ VARCHAR の INPUT_PART1
「HOUR
」のように、使用する時間単位を指定します。
INPUT_VALUE2
は VARCHAR データ型パラメーター。
「INTERVAL_HOUR_TYPE
」のような参照列の名前。
INPUT_PART2
VARCHAR
参照列に割り当てられたデータ型。
OP
文字
現在分析中の記号または演算子。
OUTPUT_PART
VARCHAR
返される値のデータ型。
戻り値¶
2つの時間間隔を引いた結果を表す varchar
値。
移行例¶
入力:
CREATE TABLE INTERVAL_TABLE
(
INTERVAL_YEAR_TYPE INTERVAL YEAR
);
SELECT INTERVAL_YEAR_TYPE - INTERVAL '7' MONTH FROM INTERVAL_TABLE;
出力:
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;
DAY_OF_WEEK_LONG_UDF¶
定義¶
タイムスタンプを完全な曜日名に変換する(例: 「Monday」、「Tuesday」など)ユーザー定義関数(UDF)。
PUBLIC.DAY_OF_WEEK_LONG_UDF(INPUT_DATE TIMESTAMP)
パラメーター¶
INPUT_DATE
はタイムスタンプ値を表します
タイムスタンプは完全な曜日名に変換されます(例: 「月曜日」、「火曜日」など)。
戻り値¶
曜日の英語名。
TD_WEEK_OF_CALENDAR_UDF¶
定義¶
ユーザー定義関数(UDF)は、Teradataの TD_WEEK_OF_CALENDAR 関数を直接置き換える役割を果たし、Snowflakeで同じ機能を提供します。
PUBLIC.TD_WEEK_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
1900年1月1日からの経過週数を計算するために使用される日付。
戻り値¶
1900年1月1日から指定日までの完全な週数を表す整数。
移行例¶
入力:
SELECT TD_WEEK_OF_CALENDAR(DATE '2023-11-30')
出力:
SELECT
PUBLIC.TD_WEEK_OF_CALENDAR_UDF(DATE '2023-11-30');
WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF¶
定義¶
マイナス記号(-)の代わりに山括弧(< >)を使用するように負数を変換します。この変換は、 PR (括弧)形式要素が元のTeradata形式文字列に存在する場合に行われます。
PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(INPUT NUMBER, FORMATARG VARCHAR)
パラメーター¶
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');
出力:
'8456'
'<8456>'
INSTR_UDF (STRING, STRING)¶
警告
これはユーザー定義関数(UDF)で、 2つの 異なるパラメーターセット を受け付けます。
定義¶
source_string内でsearch_stringが出現するすべてのインスタンスを検索します。
PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING)
パラメーター¶
SOURCE_STRING
は、処理が必要な入力文字列を表します。
検索されるテキスト。
SEARCH_STRING
は STRING タイプのパラメーターで、検索するテキストを指定します。
関数が探して一致させるテキストパターン。
戻り値¶
ソース文字列内でパターンが見つかるインデックス位置(位置1から開始)。
使用例¶
入力:
SELECT INSTR_UDF('INSTR FUNCTION','N');
出力:
2
TRANSLATE_CHK_UDF¶
定義¶
エラーが発生せずにコードが正常に変換されるかどうかを確認します。
PUBLIC.TRANSLATE_CHK_UDF(COL_NAME STRING, SOURCE_REPERTOIRE_NAME STRING)
パラメーター¶
COL_NAME
は列名を表す文字列変数です。
検証が必要な列。
SOURCE_REPERTOIRE_NAME
はソースディレクトリ名を指定する文字列パラメーターです。
ソースコレクションまたはライブラリの名前。
戻り値¶
0: 翻訳は成功し、エラーなしで完了しました。NULL: 結果が返されませんでした(NULL値)。
文字列内の最初の文字の位置が翻訳エラーを引き起こしています。
使用例¶
入力:
SELECT PUBLIC.TRANSLATE_CHK_UDF('ABC', 'UNICODE_TO_LATIN');
出力:
0
EXPAND_ON_UDF¶
注釈
読みやすくするために、この例ではコードの一部を簡略化しています。
定義¶
Teradataのexpand-on関数の動作を再現します。
PUBLIC.EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD STRING)
パラメーター¶
TIME
は、時間値をテキスト(STRING)として格納するデータ型です。
アンカーが完全に拡張するまでの時間。
SEQ
シーケンス番号
各行の値を計算する順番。
PERIOD
期間を表すテキスト値
指定した期間の日付。
戻り値¶
expand-on句における拡張期間の計算方法を定義する VARCHAR
値。
移行例¶
入力:
SELECT bg FROM table1 EXPAND ON pd AS bg BY ANCHOR ANCHOR_SECOND;
出力:
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;
ROW_COUNT_UDF¶
定義¶
1から DIFF_TIME_PERIOD_UDF が返す値までの連番を含む配列を返します。
PUBLIC.ROW_COUNT_UDF(NROWS DOUBLE)
パラメーター¶
NROWS
は、データセットの行の合計数を10進数(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'));
出力:
[1, 2, 3, 4, 5]
移行例¶
入力:
SELECT NORMALIZE emp_id, duration FROM project EXPAND ON duration AS bg BY ANCHOR ANCHOR_SECOND;
出力:
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;
CENTURY_UDF¶
定義¶
指定した日付の世紀を計算します。
PUBLIC.CENTURY_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
世紀を決定するために使用される入力日。
戻り値¶
指定した日付の世紀数をvarcharで返します。
使用例¶
入力:
SELECT PUBLIC.CENTURY_UDF(DATE '1915-02-23');
出力:
'20'
TIME_DIFFERENCE_UDF¶
警告
Snowflakeが同等の組み込み関数を提供するようになったため、この UDF は廃止されました。詳細については、 TIMEDIFF ドキュメント をご参照ください。
定義¶
与えられた2つのタイムスタンプ間の時間間隔を計算します。
PUBLIC.TIME_DIFFERENCE_UDF
(MINUEND TIME, SUBTRAHEND TIME, INPUT_PART VARCHAR)
パラメーター¶
MINUEND
から減算されるタイムスタンプ値。
元の値から減算される時間。
SUBTRAHEND
別のタイムスタンプから減算されるタイムスタンプ値
時間は減算されています。
INPUT_PART
は、入力データを格納する VARCHAR タイプの変数です。
EXTRACT_PART
は VARCHAR タイプの変数で、文字列の抽出部分を格納します。
時間間隔から数値を抽出します。
戻り値¶
特定の時刻を表すテキスト値(VARCHAR)。
例¶
入力:
select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
出力:
SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
from
tableName;
INTERVAL_DIVIDE_UDF¶
定義¶
間隔除算を実行するカスタム関数(UDF)です。
PUBLIC.INTERVAL_DIVIDE_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_DIV INTEGER)
パラメーター¶
INPUT_PART
はデータの入力部分を表す VARCHAR タイプの変数です。
「YEAR TO MONTH」のような間隔タイプを指定する値。
INPUT_VALUE
VARCHAR
除算する時間間隔。
INPUT_DIV
は入力の除数を表す整数値です。
別の数で除算する数。
戻り値¶
出力は時間間隔を値で割って計算されます。
移行例¶
入力:
SELECT INTERVAL '6-10' YEAR TO MONTH / 8;
出力:
SELECT
PUBLIC.INTERVAL_DIVIDE_UDF('YEAR TO MONTH', '6-10', 8);
DAYNUMBER_OF_MONTH_UDF¶
定義¶
UDF は、指定されたタイムスタンプが月のどの曜日に当たるかを決定します。Teradataの DAYNUMBER_OF_MONTH(DATE, 'ISO') 関数と同様の関数です。
PUBLIC.DAYNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
対応する曜日を決定するために使用される日付値。
戻り値¶
1から33までの整数。
例¶
入力:
SELECT DAYNUMBER_OF_MONTH (DATE'2022-12-22', 'ISO');
出力:
SELECT
PUBLIC.DAYNUMBER_OF_MONTH_UDF(DATE'2022-12-22');
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)
パラメーター¶
INPUT
TIMESTAMP_TZ
ISO 年形式を使用して12月の最終日を取得するには、12月31日を使用します。
戻り値¶
ISO 年形式による、12月31日を表す形式。
使用例¶
入力:
SELECT PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(DATE '2022-01-01');
出力:
2021-12-31
DATEADD_UDF¶
注釈
読みやすくするために、この例ではコードの一部を簡略化しています。
定義¶
二つの日付の和を計算する関数
PUBLIC.DATE_ADD_UDF(FIRST_DATE DATE, SECOND_DATE DATE)
パラメーター¶
FIRST_DATE
は、タイプ DATE の列を表します。
含まれる最初の日付値。
SECOND_DATE
は、タイプ DATE の列を表します。
2番目の日付値をfirst_dateに追加します。
¶
戻り値¶
結果は、両方の入力パラメーターを組み合わせて計算された日付です。
例¶
入力:
SELECT
CAST(CAST (COLUMNB AS DATE FORMAT 'MM/DD/YYYY') AS TIMESTAMP(0))
+
CAST (COLUMNA AS TIME(0) FORMAT 'HHMISS' )
FROM TIMEDIFF;
出力:
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;
JULIAN_TO_DATE_UDF¶
定義¶
ユリウス暦日付形式(YYYYDDD)を標準グレゴリオ暦日付(YYYY-MM-DD)に変換するユーザー定義関数(UDF)。
PUBLIC.JULIAN_TO_DATE_UDF(JULIAN_DATE CHAR(7))
パラメーター¶
JULIAN_DATE
CHAR - ユリウス暦形式の日付を格納するために使用される文字データ型。
ユリウス暦形式から変換する日付。
戻り値¶
ユリウス暦日付の日付表現を返すか、変換できない場合はnullを返します。
使用例¶
入力:
SELECT JULIAN_TO_DATE_UDF('2022045');
出力:
'2022-02-14'
移行例¶
入力:
SELECT TO_DATE('2020002', 'YYYYDDD');
出力:
SELECT
PUBLIC.JULIAN_TO_DATE_UDF('2020002');
FIRST_DAY_JANUARY_OF_ISO_UDF¶
定義¶
PUBLIC.YEAR_BEGIN_ISO_UDF
関数がその結果を計算するために使用する、 ISO 暦年の1月の元日。
FUNCTION PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
ISO 暦年形式で1月1日を表す日付。
戻り値¶
指定された ISO 暦年の1月1日を表す日付。
使用例¶
入力:
SELECT PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(DATE '2022-01-01');
出力:
2021-01-01
TIMESTAMP_DIFFERENCE_UDF¶
定義¶
ユーザー定義関数(UDF)を使用した2つの日付の減算方法
PUBLIC.TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR)
TeradataとSnowflakeの日付時刻減算の違い¶
TeradataとSnowflakeは、日付と時刻の計算に異なる方法を使用しています。構文、出力データ型、精度レベルが異なります。
構文: Teradataでは、 DATE、 TIMESTAMP、 TIME の減算は、結果の形式を指定するためにマイナス記号と間隔を使用します。詳細については、 https://docs.teradata.com/r/w19R4KsuHIiEqyxz0WYfgA/7kLLsWrP0kHxbk3iida0mA をご参照ください。Snowflakeはこれらの操作を3つの関数で使い分けています。
DATEDIFF (すべての日付タイプで動作します)
TIMESTAMPDIFF
TIMEDIFF 各関数は、比較する2つの日付と返す日付部分を必要とします。DATE タイプの場合、マイナス記号を使うこともできます。
戻り値の型: Teradataは様々な間隔タイプを返します((https://www.docs.teradata.com/r/T5QsmcznbJo1bHmZT2KnFw/z~5iW7rYVstcmNYbd6Dsjg) を参照)。Snowflakeの関数は、ユニット数を表す整数を返します。詳細については、 https://docs.snowflake.com/en/sql-reference/functions/datediff.html をご参照ください。
丸め: DATEDIFF の日付部分の処理方法は、Teradataと異なる結果を生成する可能性があります。特定の丸め動作については、 https://docs.snowflake.com/en/sql-reference/functions/datediff.html#usage-notes をご確認ください。
警告
日付計算を行う場合、丸めやタイムゾーンの違いにより、結果が1日異なる場合があります。
パラメーター¶
MINUEND
から減算されるタイムスタンプ値を表します。
減算の開始点として使用される日付。
SUBTRAHEND
は別のタイムスタンプから減算されるタイムスタンプ値です。
日付は削除されています。
INPUT_PART
は VARCHAR (可変長文字列)タイプの変数です。
返す必要がある部分。
戻り値¶
指定された INPUT_PART
パラメーターに基づいて文字列値を形式化します。
例¶
入力:
select (timestampColumn1 - timestampColumn2 YEAR) from tableName;
SELECT
(
PUBLIC.TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'YEAR')) from
tableName;
FIRST_DAY_OF_MONTH_ISO_UDF¶
定義¶
ユーザー定義関数(UDF)は、指定した月の最初の日を ISO 形式(YYYY-MM-DD)で返します。
PUBLIC.FIRST_DAY_OF_MONTH_ISO_UDF(YEAR NUMBER, MONTH NUMBER)
パラメーター¶
YEAR
は、4桁の年値を格納するために使用される数値データ型です。
暦年を表す数値(例: 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)
パラメーター¶
NUMERIC_EXPRESSION
は、整数として評価される値または式を表します。
YYYY-MM-DD のように、特定の形式で日付を表す値。
戻り値¶
日付形式に変換された数値。
例¶
入力:
SELECT * FROM table1
WHERE date_column > 1011219
出力:
SELECT
* FROM
table1
WHERE date_column > PUBLIC.INT_TO_DATE_UDF( 1011219);
NULLIFZERO_UDF¶
定義¶
ゼロによる除算エラーを防ぐため、データのゼロ値を NULL に置き換えます。
PUBLIC.NULLIFZERO_UDF(NUMBER_TO_VALIDATE NUMBER)
パラメーター¶
NUMBER_TO_VALIDATE
NUMBER
検証が必要な数値。
戻り値¶
入力が0の場合はnullを返し、そうでない場合は元の数値を返します。
使用例¶
SELECT NULLIFZERO_UDF(0);
出力:
NULL
DATE_LONG_UDF¶
定義¶
「曜日、月 DD、 YYYY」(例: 「Monday, January 01, 2024」)という形式に日付を変換します。この形式は、Teradataの DL 日付形式要素と一致します。
PUBLIC.DATE_LONG_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
日付は、長い日付形式(例: 「September 15, 2023」)で表示する必要があります。
戻り値¶
Teradata DL 形式要素を表す VARCHAR
データ型。
使用例¶
入力:
SELECT PUBLIC.DATE_LONG_UDF(DATE '2021-10-26');
出力:
'Tuesday, October 26, 2021'
TD_MONTH_OF_CALENDAR_UDF¶
定義¶
ユーザー定義関数(UDF)は、Teradataの TD_MONTH_OF_CALENDAR 関数の代替となり、同じ機能を提供します。
PUBLIC.TD_MONTH_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
1900年1月1日からの経過月数を計算するために使用される日付。
戻り値¶
1900年1月1日から指定日までの月数を表す整数。
移行例¶
入力:
SELECT TD_MONTH_OF_CALENDAR(DATE '2023-11-30')
出力:
SELECT
PUBLIC.TD_MONTH_OF_CALENDAR_UDF(DATE '2023-11-30');
MONTH_NAME_LONG_UDF¶
定義¶
タイムスタンプを対応する完全な月名に変換するユーザー定義関数(UDF)。
PUBLIC.MONTH_NAME_LONG_UDF(INPUT_DATE TIMESTAMP)
パラメーター¶
INPUT
DATE
タイムスタンプは、完全な月名を表示するように変換する必要があります。
戻り値¶
月の英語名。
TD_DAY_OF_CALENDAR_UDF¶
定義¶
Teradataの TO_DAY_OF_CALENDAR
機能を再現するユーザー定義関数(UDF)
PUBLIC.TD_DAY_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
1900年1月1日からの経過日数を計算するために使用される日付。
戻り値¶
1900年1月1日から INPUT
の日付までの月数を表す整数。
移行例¶
入力:
SELECT td_day_of_calendar(current_date)
出力:
SELECT
PUBLIC.TD_DAY_OF_CALENDAR_UDF(CURRENT_DATE());
PERIOD_TO_TIME_UDF¶
定義¶
Teradata PERIOD の値を、Teradataのキャスト動作を維持したまま TIME 値に変換する関数。
PERIOD_TO_TIME_UDF(PERIOD_VAL VARCHAR(22))
パラメーター¶
PERIOD_VAL
は期間値を表します
変換が必要な期間。
戻り値¶
この関数は、 PERIOD
を表す TIME
値を返します。変換が完了できない場合は、nullを返します。
使用例¶
入力:
SELECT PERIOD_TO_TIME_UDF(PERIOD_UDF(CURRENT_TIME()));
出力:
08:42:04
INSTR_UDF (STRING, STRING, DOUBLE, DOUBLE)¶
警告
このユーザー定義関数(UDF)は、 4つの 入力パラメーター を受け付けます。
定義¶
source_string内でsearch_stringが出現するすべてのインスタンスを検索します。
PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION DOUBLE, OCCURRENCE DOUBLE)
パラメーター¶
SOURCE_STRING
は、処理が必要な入力文字列を表します。
検索する文字列。
SEARCH_STRING
は検索するテキスト値です。
関数が探して一致させるテキストパターン。
POSITION
DOUBLE - 10進数を倍精度で格納する数値データ型。
検索を開始するテキスト内の位置(位置1から開始)。
OCCURRENCE
DOUBLE - イベントの発生回数を表す数値データ型で、倍精度浮動小数点数として格納されます。
検索を開始するテキスト内の位置(位置1から開始)。
戻り値¶
指定されたテキストがソース文字列内で見つかるインデックス位置。
使用例¶
入力:
SELECT INSTR_UDF('CHOOSE A CHOCOLATE CHIP COOKIE','CH',2,2);
出力:
20
ROUND_DATE_UDF¶
定義¶
DATE_VALUE を処理するユーザー定義関数(UDF)で、時間部分を指定した単位に丸めます(UNIT_TO_ROUND_BY)。この関数は、Teradata ROUND(date) 関数に似ています。
PUBLIC.ROUND_DATE_UDF(DATE_TO_ROUND TIMESTAMP_LTZ, UNIT_TO_ROUND_BY VARCHAR(5))
パラメーター¶
DATE_TO_ROUND
TIMESTAMP_TZ (丸めが必要なタイムゾーン情報を含むタイムスタンプ値)
丸める必要のある日付値。
UNIT_TO_ROUND_BY
VARCHAR - 丸めに使用する時間単位を指定します
日付の丸めに使用される時間単位。
戻り値¶
指定した時間単位で丸めた日付を返します。UNIT_TO_ROUND_BY パラメーターは、日付の丸め方を決定します。
移行例¶
入力:
SELECT ROUND(CURRENT_DATE, 'RM') RND_DATE
出力:
SELECT
PUBLIC.ROUND_DATE_UDF(CURRENT_DATE(), 'RM') RND_DATE;
SUBSTR_UDF (STRING, FLOAT, FLOAT)¶
警告
これはユーザー定義関数(UDF)で、 3つの パラメーター を受け付けます。
定義¶
指定した文字列から、開始位置と終了位置を使用してテキストの一部を取得します。
PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT, LENGTH FLOAT)
パラメーター¶
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);
出力:
'','','A','','A'
GETQUERYBANDVALUE_UDF (VARCHAR)¶
警告
これはユーザー定義関数(UDF)で、 1つの パラメーター を受け付けます。
定義¶
トランザクション、セッション、またはプロファイルクエリバンドに格納されている名前と値のペアから値を返します。
GETQUERYBANDVALUE_UDF(SEARCHNAME VARCHAR)
パラメーター¶
SEARCHNAME
VARCHAR - 検索語や検索名を格納するために使用される VARCHAR タイプの変数。
キーと値のペアで検索する名前。
戻り値¶
セッションクエリバンドの「名前」キー値。
使用例¶
入力:
ALTER SESSION SET QUERY_TAG = 'user=Tyrone;role=security';
SELECT GETQUERYBANDVALUE_UDF('role');
出力:
security
移行例¶
入力:
SELECT GETQUERYBANDVALUE(1, 'group');
出力:
/** MSC-ERROR - MSCEWI2084 - TRANSACTION AND PROFILE LEVEL QUERY TAGS NOT SUPPORTED IN SNOWFLAKE, REFERENCING SESSION QUERY TAG INSTEAD **/
SELECT GETQUERYBANDVALUE_UDF('group');
TD_WEEK_OF_YEAR_UDF¶
定義¶
ユーザー定義関数(UDF)は、年内の指定された日付の完全な週番号を計算します。この関数は、Teradataの TD_WEEK_OF_YEAR
および WEEKNUMBER_OF_YEAR
関数と同じ機能を提供します。
PUBLIC.TD_WEEK_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
週番号の計算に使用される日付。
戻り値¶
指定した日付がその年のどの週にあたるかを示す数値。
使用例¶
入力:
SELECT PUBLIC.WEEK_OF_YEAR_UDF(DATE '2024-05-10'),
PUBLIC.WEEK_OF_YEAR_UDF(DATE '2020-01-03')
出力:
18, 0
EXTRACT_TIMESTAMP_DIFFERENCE_UDF¶
注釈
読みやすくするため、コード例を簡略化し、最も関連性の高い部分のみを示しています。
定義¶
MINUEND
から SUBTRAHEND
を減算した結果から「データ」部分を取得します。
PUBLIC.EXTRACT_TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR, EXTRACT_PART VARCHAR)
TeradataとSnowflakeの日付時刻抽出の違い¶
Teradata関数とSnowflake関数では、必要なパラメーターが異なったり、返されるデータ型が異なる場合があります。
パラメーター: TeradataとSnowflakeの EXTRACT 関数の主な違いは、Snowflakeが日付と時刻のみを扱うのに対し、Teradataは間隔もサポートしていることです。詳細については、 Snowflakeの EXTRACT 関数ドキュメント および Teradataの EXTRACT 関数ドキュメント をご参照ください。
戻り値の型: 関数は異なる値を返します。Teradataの EXTRACT は整数かdecimal(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;
出力:
SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
from
tableName;
JSON_EXTRACT_DOT_NOTATION_UDF¶
定義¶
JavaScript やPythonでネストしたプロパティにアクセスするのと同じように、ドット記法を使って JSON オブジェクトにクエリできるようにするユーザー定義関数(UDF)。
JSON_EXTRACT_DOT_NOTATION_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING)
Teradata JSON エンティティ参照(ドット記法)とSnowflake JSON クエリメソッドの違い。¶
TeradataとSnowflakeでは、 JSON データを走査する方法が異なります。Teradataは、ドット記法、配列インデックス、ワイルドカードアクセスやダブルドット記法などの特殊演算子を使用し、 JavaScript に基づいたアプローチを採用しています。対照的に、Snowflakeの JSON 走査機能はより限定的で、直接メンバーアクセスと配列インデックスのみをサポートしています。
パラメーター¶
JSON_OBJECT
JSON オブジェクトを表すデータ型で、さまざまなデータ型のキーと値のペアをネストすることができます。
抽出する値を含む JSON オブジェクト。
JSON_PATH
JSON ドキュメントからデータを抽出するパスを指定する文字列パラメーター。
JSON パス記法で指定された、値が JSON_OBJECT 内で見つかる場所。
戻り値¶
指定された JSON_PATH に一致する JSON_OBJECT 内のデータ要素。
移行例¶
入力:
SELECT CAST(varcharColumn AS JSON(2000))..name FROM variantTest;
出力:
SELECT
JSON_EXTRACT_DOT_NOTATION_UDF(CAST(varcharColumn AS VARIANT), '$..name')
FROM
variantTest;
WEEK_OF_MONTH_UDF¶
定義¶
特定の日付が月のどの週に該当するかを計算します。
PUBLIC.WEEK_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
月のどの週に当たるかを決定するために使用される日付。
戻り値¶
特定の日付が月のどの週にあたるかを表示する VARCHAR 列。
使用例¶
入力:
SELECT PUBLIC.WEEK_OF_MONTH_UDF(DATE '2021-10-26');
出力:
'4'
DAYNAME_LONG_UDF (TIMESTAMP_TZ)¶
警告
これはユーザー定義関数(UDF)で、 1つの パラメーター を受け付けます。
定義¶
初めを大文字にして曜日名を返す DAYNAME_LONG_UDF 関数のバリアントを作成する UDF (デフォルト形式)。
PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
曜日を取得する日付。
戻り値¶
曜日の完全な名前を含む文字列を返します。
使用例¶
入力:
SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2022-06-30');
出力:
'Thursday'
INTERVAL_TO_MONTHS_UDF¶
定義¶
時間間隔を月に変換します。
PUBLIC.INTERVAL_TO_MONTHS_UDF
(INPUT_VALUE VARCHAR())
パラメーター¶
INPUT_VALUE
VARCHAR
月に変更される期間。
戻り値¶
処理する月数を整数で指定します。
GETQUERYBANDVALUE_UDF (VARCHAR, FLOAT, VARCHAR)¶
警告
このユーザー定義関数(UDF)は、3つのパラメーターを受け付けます。
定義¶
トランザクション、セッション、またはプロファイルクエリバンドに格納されている名前と値のペアから値を返します。値はクエリバンド内の特定の名前に関連付けられています。
GETQUERYBANDVALUE_UDF(QUERYBAND VARCHAR, SEARCHTYPE FLOAT, SEARCHNAME VARCHAR)
パラメーター¶
QUERYBAND
は、クエリバンド情報を格納する VARCHAR データ型です。
クエリバンドはトランザクション、セッション、プロファイルのクエリバンドを1つの文字列にまとめたものです。
SEARCHTYPE
は、浮動小数点数のデータ型です。
一致するペアが検索される最大深度。
0はワイルドカード値を表し、あらゆる入力に一致します。
トランザクションはデータベースにおける1つの作業単位を表します。
セッションオブジェクトは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');
出力:
Matt
SaraDB
DbAdmin
NULL
移行例¶
入力:
SELECT GETQUERYBANDVALUE('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'account')
出力:
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;
JULIAN_DAY_UDF¶
定義¶
ユリウス暦日数を計算します。ユリウス暦日数は、4713年1月1日 BCE (共通時代以前)からの連続した日数を表します。ユリウス暦日は天文学や暦の計算で使われます。
PUBLIC.JULIAN_DAY_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
ユリウス暦日数に変換される日付。
戻り値¶
計算されたユリウス暦日を表す varchar
値。
使用例¶
入力:
SELECT PUBLIC.JULIAN_DAY_UDF(DATE '2021-10-26');
出力:
'2459514'
WEEKNUMBER_OF_MONTH_UDF¶
定義¶
指定された日付から月を識別します。
PUBLIC.WEEKNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
パラメーター¶
INPUT
TIMESTAMP_TZ
月番号を計算する日付。
戻り値¶
指定した日付の月(1~12)を表す数値。
使用例¶
入力:
SELECT PUBLIC.WEEKNUMBER_OF_MONTH_UDF(DATE '2022-05-21')
出力:
3
JSON_EXTRACT_UDF¶
定義¶
JSONExtract
、 JSONExtractValue
、 JSONExtractLargeValue
関数の動作を模倣するユーザー定義関数(UDF)。この UDF により、 JSON オブジェクトから複数の値を抽出できます。
JSON_EXTRACT_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING, SINGLE_VALUE BOOLEAN)
パラメーター¶
JSON_OBJECT
は、 JSON 形式のデータを構造化された形式で保存するデータ型です。
抽出する値を含む JSON オブジェクト。
JSON_PATH
JSON ドキュメントからデータを抽出するパスを指定する文字列。
JSON パス記法で指定された、 JSON_OBJECT 内で目的の値が見つかる場所。
SINGLE_VALUE
単一の値を返すか、複数の値を返すかを示すブール値フラグ。
BOOLEAN パラメーター: trueにセットすると、単一の値を返します(JSONExtractValue および JSONExtractLargeValue 関数で必須)。falseに設定すると、値の配列を返します(JSONExtract で使用)。
戻り値¶
JSON オブジェクト内の指定された JSON パスで見つかったデータ値。
移行例¶
入力:
SELECT
Store.JSONExtract('$..author') as AllAuthors
FROM BookStores;
出力:
SELECT
JSON_EXTRACT_UDF(Store, '$..author', FALSE) as AllAuthors
FROM
BookStores;
COMPUTE_EXPAND_ON_UDF¶
定義¶
指定された期間タイプに基づいてデータを展開する方法を決定します。
PUBLIC.COMPUTE_EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD TIMESTAMP, PERIODTYPE STRING)
パラメーター¶
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)
パラメーター¶
INPUT
TIMESTAMP_TZ
四半期のどの週に該当するかを計算するために使用される日付。
戻り値¶
四半期のどの週(1~13)を参照としているかを示す整数。
使用例¶
入力:
SELECT WEEK_NUMBER_OF_QUARTER_UDF(DATE '2023-01-01'),
WEEK_NUMBER_OF_QUARTER_UDF(DATE '2022-10-27')
出力:
1, 4
YEAR_END_ISO_UDF¶
定義¶
Teradataの TD_YEAR_END 関数と同様に、 ISO カレンダー標準を使用して、指定された日付の最終日を計算するユーザー定義関数(UDF)。
PUBLIC.YEAR_END_ISO_UDF(INPUT date)
パラメーター¶
INPUT
DATE
ISO カレンダー基準による1年の最終日を表す日付。
戻り値¶
ISO カレンダーシステムによる1年の最後の日。
使用例¶
入力:
SELECT PUBLIC.YEAR_END_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_END_ISO_UDF(DATE '2022-04-12');
出力:
2022-01-02, 2023-01-01
INSERT_CURRENCY_UDF¶
定義¶
通貨記号と数字の間にスペースや記号がないように、通貨記号を数字の1桁目の直前に挿入します。
PUBLIC.INSERT_CURRENCY_UDF(INPUT VARCHAR, CURRENCYINDEX INTEGER, CURRENCYVALUE VARCHAR)
パラメーター¶
INPUT
VARCHAR
通貨形式を必要とする数値を変換する際の TO_CHAR の出力。
CURRENCYINDEX
は通貨のインデックスを表す整数値です。
通貨を挿入する配列内の位置。
CURRENCYVALUE
VARCHAR 通貨値を格納するフィールド。
通貨値として使用されるテキスト。
戻り値¶
定義された位置の通貨テキストを含む varchar
フィールド。
使用例¶
入力:
SELECT PUBLIC.INSERT_CURRENCY_UDF(to_char(823, 'S999999'), '1', 'CRC');
出力:
'+CRC823'
INSTR_UDF (STRING, STRING, INT)¶
警告
このユーザー定義関数(UDF)は、3つのパラメーターを受け付けます。
定義¶
source_string内でsearch_stringが出現するすべてのインスタンスを検索します。
PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION INT)
パラメーター¶
SOURCE_STRING
は、入力として使われる文字列値を表します。
検索されるテキスト。
SEARCH_STRING
は検索するテキスト値です。
関数が探して一致させるテキストパターン。
POSITION
は、シーケンス内の位置を表す整数データ型です。
検索を開始するテキスト内の位置(位置1から開始)。
戻り値¶
元の文字列の中で、一致が見つかった場所。
使用例¶
入力:
SELECT INSTR_UDF('FUNCTION','N', 3);
出力:
8