Hologres は、以下の文字列関数をサポートしています。PostgreSQL 互換の文字列関数の完全なリストについては、PostgreSQL Functions をご参照ください。
関数インデックス
文字列の連結、分割、パディング
| 関数 | 説明 |
|---|---|
| STRING || STRING | 2 つの文字列を連結します。 |
| CONCAT | 2 つ以上の文字列を連結します。NULL の引数は無視されます。 |
| CONCAT_WS | 区切り文字を使用して文字列を連結します。NULL の文字列引数は無視されます。 |
| LISTAGG | 複数の行にわたる列の値を 1 つの文字列に集約します。Oracle 互換であり、orafce 拡張機能が必要です。 |
| STRING_AGG | 複数の行にわたる列の値を 1 つの文字列に集約します。 |
| LEFT | 文字列の先頭から文字を抽出します。 |
| RIGHT | 文字列の末尾から文字を抽出します。 |
| SPLIT_PART | 文字列をデリミタで分割し、*n* 番目のセグメントを返します。 |
| SUBSTRING | 位置または正規表現によって部分文字列を抽出します。エイリアス:SUBSTR (Oracle 互換形式)。 |
| SUBSTR | 開始位置から部分文字列を抽出します。Oracle 互換であり、orafce 拡張機能が必要です。エイリアス:SUBSTRING。 |
| REGEXP_MATCH | 文字列を正規表現と照合し、一致した部分を配列として返します。 |
| REGEXP_SPLIT_TO_TABLE | 正規表現で文字列を分割し、各セグメントを行として返します。 |
| REGEXP_SPLIT_TO_ARRAY | 正規表現で文字列を分割し、セグメントを配列として返します。 |
| TRIM | 文字列の一方または両方の端から指定された文字を削除します。 |
| BTRIM | 文字列の両端から指定された文字を削除します。 |
| LTRIM | 文字列の左側 (先頭) から指定された文字を削除します。 |
| RTRIM | 文字列の右側 (末尾) から指定された文字を削除します。 |
| LPAD | 文字列を指定された長さに左パディングします。 |
| RPAD | 文字列を指定された長さに右パディングします。 |
その他の文字列関数
| 関数 | 説明 |
|---|---|
| ASCII | 最初の文字の ASCII コードを返します。 |
| CHAR_LENGTH | 文字列の文字長を返します。エイリアス:LENGTH。 |
| LENGTH | 文字列の文字数を返します。エイリアス:CHAR_LENGTH。 |
| CHR | 指定されたコード値に対応する文字を返します。 |
| INITCAP | 各単語の最初の文字を大文字にします。 |
| LOWER | 文字列を小文字に変換します。 |
| UPPER | 文字列を大文字に変換します。 |
| OCTET_LENGTH | 文字列のバイト数を返します。 |
| MD5 | 文字列の MD5 ハッシュを 16 進数形式で返します。 |
| POSITION | 文字列内の部分文字列の位置を返します。エイリアス:STRPOS。 |
| STRPOS | 文字列内の部分文字列の位置を返します。エイリアス:POSITION。 |
| INSTR | 文字列の範囲内にある部分文字列の位置を返します。Oracle 互換であり、orafce 拡張機能が必要です。 |
| REPLACE | 部分文字列のすべての出現箇所を別の文字列に置換します。 |
| REGEXP_REPLACE | POSIX 正規表現に一致する部分文字列を置換します。 |
| TRANSLATE | 文字列内の個々の文字を置換します。 |
| REPEAT | 文字列を指定された回数繰り返します。 |
| STARTS_WITH | 文字列が指定されたプレフィックスで始まる場合に true を返します。 |
| PARSE_IDENT | 完全修飾 SQL 識別子文字列を解析します。 |
| QUOTE_IDENT | 有効な SQL 識別子として引用符で囲まれた文字列を返します。 |
| QUOTE_LITERAL | 有効な SQL 文字列定数として引用符で囲まれた文字列を返します。 |
| TO_HEX | 整数をその 16 進数表現に変換します。 |
| TO_NUMBER | 文字列を数値型に変換します。 |
| PLVSTR.RVRS | 文字列を反転させます。Oracle 互換であり、orafce 拡張機能が必要です。 |
| ROW | 現在の行の行番号を返します。Hologres V1.3 以降でサポートされています。 |
文字列の連結、分割、パディング
STRING \|\| STRING
2 つの文字列を連結します。
構文
<string_value1> TEXT || <string_value2> TEXTパラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
string_value1 | はい | 最初の文字列式。 |
string_value2 | はい | 2 番目の文字列式。 |
戻り値の型: TEXT
例
-- 戻り値: HologreSQL
SELECT 'Holo' || 'greSQL';CONCAT
2 つ以上の文字列を 1 つに連結します。NULL の引数は無視されます。
構文
CONCAT(<str1> TEXT, <str2> TEXT, ..., <strN> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str1, ..., strN | はい | 連結する文字列。NULL 値は無視されます。 |
戻り値の型: TEXT
例
SELECT CONCAT('abcde', 2, NULL, 22);結果:
concat
--------
abcde222CONCAT_WS
最初の引数を区切り文字として使用し、それ以降のすべての引数を連結します。
構文
CONCAT_WS(<sep> TEXT, str "any" [, str "any" [, ...]])any 型は、すべてのデータ型が受け入れられることを示します。
パラメーター
必須:
sep: 各文字列の間に挿入する区切り文字です。sep が NULL の場合、この関数は NULL を返します。
オプション:
str:連結する文字列。NULL の文字列引数は無視されます。
戻り値の型: TEXT
例
SELECT CONCAT_WS(',', 'abcde', 2, NULL, 22);結果:
concat_ws
----------
abcde,2,22LISTAGG
複数の行にわたる同じ列の値を 1 つの文字列に集約します。これは Oracle 互換の関数であり、orafce 拡張機能が必要です。設定手順については、「Oracle 互換関数」をご参照ください。
構文
LISTAGG(<str1> TEXT [, <str2> TEXT])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str1 | はい | 集約する列または文字列式。 |
str2 | いいえ | 集約された値の間の区切り文字。デフォルト:区切り文字なし。 |
戻り値の型: TEXT
例
-- 戻り値: hologres
SELECT LISTAGG(t) FROM (VALUES('holo'), ('gres')) AS l(t);-- 戻り値: holo.gres
SELECT LISTAGG(t, '.') FROM (VALUES('holo'), ('gres')) AS l(t);STRING_AGG
複数の行にわたる同じ列の値を 1 つの文字列に集約します。
構文
STRING_AGG(expression [order_by_clause]) [FILTER (WHERE filter_clause)]FILTER 句は Hologres V1.3 以降でサポートされています。インスタンスをアップグレードするには、「インスタンスのアップグレード」をご参照ください。サポートが必要な場合は、Hologres DingTalk グループにご参加ください。参加方法については、「オンラインサポートの利用方法」をご参照ください。パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
expression | はい | 集約する列または式。 |
order_by_clause | いいえ | 連結前の値のソート順を定義します。省略した場合、順序は保証されません。 |
FILTER (WHERE filter_clause) | いいえ | 集約に含める行をフィルターします。 |
戻り値の型: TEXT
例
例 1:すべての都市名を 1 つの文字列に集約します。
CREATE TABLE city_test (
country text,
city text
);
INSERT INTO city_test
VALUES ('China', 'Shanghai'), ('China', 'Taiwan'), ('Japan', 'Tokyo'), ('France', 'Paris'), ('UK', 'London');
SELECT STRING_AGG(city, ',') FROM city_test;結果:
string_agg
-------------------------------
上海,台湾,東京,パリ,ロンドン例 2: student_id > 2 である名前を集計します。
CREATE TABLE name_text (
student_id int,
name text
);
INSERT INTO name_text
VALUES (1, 'Zhang San'), (2, 'Li Si'), (3, 'Wang Wu'), (4, 'Zhou Liu');
SELECT STRING_AGG(name, ',') FILTER (WHERE student_id > 2) FROM name_text;結果:
string_agg
-----------
Wang Wu,Zhou LiuLEFT
文字列の先頭から指定された文字数を抽出します。
構文
LEFT(<str> TEXT, <num> INT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
num | はい | 抽出する文字数。負の場合は、最後の -num 文字を除くすべての文字を返します。 |
戻り値の型: TEXT
例
SELECT LEFT('hologres', 4);結果:
left
----
holoRIGHT
文字列の末尾から指定された文字数を抽出します。
構文
RIGHT(<str> TEXT, <num> INT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
num | はい | 抽出する文字数。負の場合は、最初の -num 文字を除くすべての文字を返します。 |
戻り値の型: TEXT
例
SELECT RIGHT('hologres', 4);結果:
right
-----
gresSPLIT_PART
文字列をデリミタで分割し、*n* 番目のセグメントを返します。
構文
SPLIT_PART(<str> TEXT, <delimiter> TEXT, <num> INT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 分割する対象文字列。 |
delimiter | はい | 分割に使用するデリミタ。 |
num | はい | 返すセグメントの 1 から始まるインデックス。 |
戻り値の型: TEXT
注意事項
numがセグメント数より大きい場合、この関数は NULL を返します。
例
CREATE TABLE split_part_test (
a text
);
INSERT INTO split_part_test VALUES ('a/b/c/d/e'), ('a1/b1/c1/d1/e1');
SELECT split_part(a, '/', 2) FROM split_part_test;結果:
split_part
----------
b
b1SUBSTRING
対象文字列から部分文字列を抽出します。位置ベース、POSIX 正規表現、SQL 正規表現の 3 つの形式をサポートしています。
構文
位置ベース:
SUBSTRING(<str> TEXT [FROM <num_start> INT] [FOR <num_end> INT])POSIX 正規表現:
SUBSTRING(<str> TEXT FROM <pattern> TEXT)SQL 正規表現:
SUBSTRING(<str> TEXT FROM <pattern> TEXT FOR <escape> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
num_start | いいえ | 開始位置 (1 から始まる)。デフォルト:1。 |
num_end | いいえ | 抽出する文字数。デフォルト:文字列の末尾まで。 |
pattern | はい (正規表現形式) | 照合する正規表現。 |
escape | はい (SQL 正規表現) | .、*、+ などの特殊文字のエスケープ文字。 |
戻り値の型: TEXT
例
例 1:位置によって部分文字列を抽出します。
SELECT SUBSTRING('Thomas' FROM 2 FOR 3);結果:
substring
---------
hom例 2:POSIX 正規表現に一致する部分文字列を抽出します。
SELECT SUBSTRING('Thomas' FROM '...$');結果:
substring
---------
mas例 3:SQL 正規表現に一致する部分文字列を抽出します。
SELECT SUBSTRING('Thomas' FROM '%#"o_a#"_' FOR '#');結果:
substring
---------
omaSUBSTR
開始位置から部分文字列を抽出します。これは Oracle 互換の関数であり、orafce 拡張機能が必要です。設定手順については、「Oracle 互換関数」をご参照ください。
構文
開始位置から末尾まで抽出:
SUBSTR(<str> TEXT, <num_start> INTEGER)固定長の部分文字列を抽出:
SUBSTR(<str> TEXT, <num_start> INTEGER, <len> INTEGER)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
num_start | はい | 開始位置 (1 から始まる)。 |
len | いいえ | 抽出する文字数。デフォルト:文字列の末尾まで。 |
戻り値の型: TEXT
例
例 1:4 番目の文字から末尾まで抽出します。
-- 戻り値: ogres
SELECT SUBSTR('Hologres', 4);例 2:2 番目の文字から 5 文字を抽出します。
-- 戻り値: ologr
SELECT SUBSTR('Hologres', 2, 5);REGEXP_MATCH
文字列を正規表現と照合し、一致した部分を配列として返します。
構文
REGEXP_MATCH(<str> TEXT, <pattern> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 照合する文字列。 |
pattern | はい | 正規表現。 |
戻り値の型: ARRAY
例
SELECT regexp_match('foobarbequebaz', '(bar)(beque)');結果:
regexp_match
------------
{bar,beque}REGEXP_SPLIT_TO_TABLE
正規表現を使用して文字列を分割し、各セグメントを個別の行として返します。この関数を使用して、区切られた値を複数の行に展開します。
構文
REGEXP_SPLIT_TO_TABLE(<str> TEXT, <pattern> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 分割する文字列。 |
pattern | はい | 分割位置を特定する正規表現。 |
戻り値の型: TEXT (セグメントごとに 1 行)
例
CREATE TABLE interests_sample (
name text,
interests text
);
INSERT INTO interests_sample
VALUES ('田中一郎', '歌,ダンス'), ('鈴木二郎', 'サッカー,ランニング,描画'), ('佐藤三郎', '華道,書道,ピアノ演奏,睡眠');
SELECT name, REGEXP_SPLIT_TO_TABLE(interests, ',') FROM interests_sample;結果:
名前 | regexp_split_to_table
----------+----------------------
Zhang San | 歌唱
Zhang San | ダンス
Li Si | サッカー
Li Si | ランニング
Li Si | 描画
Wang Wu | 華道
Wang Wu | 書道
Wang Wu | ピアノ演奏
Wang Wu | 睡眠REGEXP_SPLIT_TO_ARRAY
正規表現を使用して文字列を分割し、セグメントを配列として返します。
構文
REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 分割する文字列。 |
pattern | はい | 分割位置を特定する正規表現。 |
戻り値の型: ARRAY
例
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_ARRAY(intrests, ',') FROM interests_test;結果:
名前 | regexp_split_to_array
----------+----------------------------------------------------------
Zhang San | {歌唱,ダンス}
Li Si | {サッカー,ランニング,描画}
Wang Wu | {"フラワーアレンジメント",書道,"ピアノ演奏",睡眠}TRIM
文字列の一方または両方の端から指定された文字を削除します。
構文
TRIM([LEADING | TRAILING | BOTH] [<characters> TEXT] FROM <string> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
LEADING | TRAILING | BOTH | いいえ | トリミングする端。デフォルト:BOTH。 |
characters | いいえ | 削除する文字のセット。各文字は文字列全体としてではなく、個別に照合されます。デフォルト:スペース。 |
string | はい | 対象文字列。 |
戻り値の型: TEXT
例
-- 戻り値: Tom
SELECT TRIM(BOTH 'xyz' FROM 'yxTomxx');BTRIM
文字列の両端から指定された文字を削除します。
構文
BTRIM(<str> TEXT [, <characters> TEXT])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
characters | いいえ | 両端から削除する文字のセット。各文字は文字列全体としてではなく、個別に照合されます。デフォルト:スペース。 |
戻り値の型: TEXT
例
-- 戻り値: trim
SELECT BTRIM('xyxtrimyyx', 'xyz');LTRIM
文字列の左側 (先頭) から指定された文字を削除します。
構文
LTRIM(<str> TEXT [, <characters> TEXT])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
characters | いいえ | 左側から削除する文字のセット。各文字は文字列全体としてではなく、個別に照合されます。デフォルト:スペース。 |
戻り値の型: TEXT
例
-- 戻り値: test
SELECT LTRIM('zzzytest', 'xyz');RTRIM
文字列の右側 (末尾) から指定された文字を削除します。
構文
RTRIM(<str> TEXT [, <characters> TEXT])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
characters | いいえ | 右側から削除する文字のセット。各文字は文字列全体としてではなく、個別に照合されます。デフォルト:スペース。 |
戻り値の型: TEXT
例
-- 戻り値: test
SELECT RTRIM('testxxzx', 'xyz');DECIMAL 値を TEXT にキャストすると、結果はそのスケールで定義された末尾のゼロを保持します。たとえば 2 の代わりに 2.00 となります。ゼロのみを削除する単一の RTRIM 呼び出しでは、小数点が残ります:
-- 戻り値: 2.
SELECT RTRIM(2.00::DECIMAL::TEXT, '0');末尾のゼロと小数点を一緒に削除するには、2 つの RTRIM 呼び出しをネストします。最初の呼び出しでゼロを削除し、2 番目の呼び出しで小数点を削除します。
-- 戻り値: 2
SELECT RTRIM(RTRIM(2.00::DECIMAL::TEXT, '0'), '.');次の表は、a という名前の DECIMAL(10,2) 列のさまざまな値に対する 2 つの式の結果を比較したものです:
値 | RTRIM(a::TEXT, '0') | RTRIM(RTRIM(a::TEXT, '0'), '.') |
0.00 | 0. | 0 |
1.10 | 1.1 | 1.1 |
2.00 | 2. | 2 |
3.50 | 3.5 | 3.5 |
10.00 | 10. | 10 |
LPAD
文字列を指定された全長になるように、埋め込み文字で左パディングします。
構文
LPAD(<str> TEXT, <length> INT [, <fill> TEXT])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | ターゲット文字列。 |
length | はい | 結果の全体の長さ。 str が length より長い場合、文字列は右から指定された長さまで切り捨てられます。 |
fill | いいえ | パディング文字。 デフォルト:スペース。 |
戻り値の型: TEXT
例
-- 戻り値: xyxhi
SELECT LPAD('hi', 5, 'xy');RPAD
文字列を指定された全長になるように、埋め込み文字で右パディングします。
構文
RPAD(<str> TEXT, <length> INT [, <fill> TEXT])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
length | はい | 結果の全長です。str が length より長い場合、文字列は右から指定された長さに切り捨てられます。 |
fill | いいえ | パディング文字。デフォルト:スペース。 |
戻り値の型: TEXT
例
-- 戻り値: hixyx
SELECT RPAD('hi', 5, 'xy');その他の文字列関数
ASCII
文字列の最初の文字の ASCII コードを返します。
構文
ASCII(<str> TEXT)戻り値の型: INTEGER
例
-- 戻り値: 120
SELECT ASCII('x');CHAR_LENGTH
文字列の文字数を返します。LENGTH と同等です。
構文
LENGTH(<str> TEXT)戻り値の型: INTEGER
例
-- 戻り値: 4
SELECT CHAR_LENGTH('jose');LENGTH
文字列の文字数を返します。UTF-8 エンコーディングでは、各漢字、数字、または文字は 1 文字としてカウントされます。CHAR_LENGTH と同等です。
構文
LENGTH(<str> TEXT)戻り値の型: INTEGER
例
-- 戻り値: 4
SELECT LENGTH('jose');CHR
指定された ASCII または Unicode のコード値に対応する文字を返します。
構文
CHR(<num> INT)戻り値の型: TEXT
例
-- 戻り値: A
SELECT CHR(65);INITCAP
各単語の最初の文字を大文字に、残りを小文字に変換します。単語とは、非英数字で区切られた英数字のシーケンスです。
構文
INITCAP(<str> TEXT)戻り値の型: TEXT
例
-- 戻り値: Hi Thomas
SELECT INITCAP('hi THOMAS');LOWER
文字列を小文字に変換します。
構文
LOWER(<str> TEXT)戻り値の型: TEXT
例
-- 戻り値: tom
SELECT LOWER('TOM');UPPER
文字列を大文字に変換します。
構文
UPPER(<str> TEXT)戻り値の型: TEXT
例
-- 戻り値: TOM
SELECT UPPER('tom');OCTET_LENGTH
文字列のバイト数を返します。
構文
OCTET_LENGTH(<str> TEXT)戻り値の型: INTEGER
例
-- 戻り値: 4
SELECT OCTET_LENGTH('jose');MD5
文字列の MD5 ハッシュを計算し、結果を 16 進数文字列として返します。
構文
MD5(<str> TEXT)戻り値の型: TEXT
例
-- 戻り値: 900150983cd24fb0d6963f7d28e17f72
SELECT MD5('abc');POSITION
文字列内の部分文字列の開始位置を返します。部分文字列が見つからない場合は 0 を返します。STRPOS と同等です。
構文
POSITION(<substr> TEXT IN <str> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
substr | はい | 検索する部分文字列。 |
str | はい | 対象文字列。 |
戻り値の型: INTEGER
例
-- 戻り値: 3
SELECT POSITION('om' IN 'Thomas');STRPOS
文字列内の部分文字列の開始位置を返します。部分文字列が見つからない場合は 0 を返します。POSITION と同等です。
構文
STRPOS(<str> TEXT, <substr> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
substr | はい | 検索する部分文字列。 |
戻り値の型: INTEGER
例
-- 戻り値: 2
SELECT STRPOS('high', 'ig');INSTR
対象文字列内の部分文字列の位置を返します。開始位置と出現回数をオプションで制御できます。部分文字列が見つからない場合は 0 を返します。これは Oracle 互換の関数であり、orafce 拡張機能が必要です。設定手順については、「Oracle 互換関数」をご参照ください。
構文
INSTR(<str> TEXT, <patt> TEXT [, <start> INTEGER [, <nth> INTEGER]])パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
patt | はい | 検索する部分文字列。 |
start | いいえ | 検索を開始する位置。デフォルト:1 (文字列の先頭)。 |
nth | いいえ | 検索する出現回数。デフォルト:1 (最初の出現)。 |
戻り値の型: INTEGER
例
-- 戻り値: 4 (位置 1 から検索して 2 番目に出現する 'o')
SELECT INSTR('Hologres', 'o', 1, 2);-- 戻り値: 2 (位置 1 から検索して 1 番目に出現する 'o')
SELECT INSTR('Hologres', 'o', 1, 1);-- 戻り値: 4 (位置 4 以降で最初に出現する 'o')
SELECT INSTR('Hologres', 'o', 4);-- 戻り値: 2 (最初に出現する 'o')
SELECT INSTR('Hologres', 'o');REPLACE
文字列内の部分文字列のすべての出現箇所を置換します。
構文
REPLACE(<str> TEXT, <old_str> TEXT, <new_str> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
old_str | はい | 置換する部分文字列。 |
new_str | はい | 置換後の文字列。 |
戻り値の型: TEXT
例
CREATE TABLE animal_test (
animal text,
color text
);
INSERT INTO animal_test
VALUES ('dog', 'white'), ('cat', 'white'), ('tiger', 'yellow');
SELECT animal, REPLACE(color, 'white', 'multi-colored') FROM animal_test;結果:
animal | replace
-------+--------------
犬 | 多色
猫 | 多色
虎 | 黄REGEXP_REPLACE
POSIX 正規表現に一致する部分文字列を置換文字列で置換します。
構文
REGEXP_REPLACE(<str> TEXT, <regex> TEXT, <replacement> TEXT [, <flags> TEXT])パラメーター
必須:
| パラメーター | 説明 |
|---|---|
str | 対象文字列。 |
regex | 照合する POSIX 正規表現。 |
replacement | 置換後の文字列。 |
オプション:
flags:照合動作を制御する 1 つ以上の文字。デフォルト:最初の一致のみを置換し、大文字と小文字を区別します。
| フラグ | 説明 |
|---|---|
g | すべての一致を置換します (デフォルトでは最初のもののみ置換)。 |
i | 大文字と小文字を区別しないマッチング。 |
m | 複数行モード。 |
s | 単一行モード:. は改行に一致します。 |
戻り値の型: TEXT
例
CREATE TABLE a_test (
a text
);
INSERT INTO a_test VALUES ('Abcd1234abCd');
SELECT REGEXP_REPLACE(a, '1234.', '77', 'ig') FROM a_test;結果:
regexp_replace
--------------
Abcd77bCdTRANSLATE
文字マッピングに基づいて文字列内の個々の文字を置換します。
構文
TRANSLATE(<str> TEXT, <substr> TEXT, <newstr> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | ターゲット文字列です。 |
substr | はい | 置き換える文字のセットです。 |
newstr | はい | 置換文字です。substr の文字と位置的に対応付けられます。newstr が substr よりも短い場合、substr に含まれる余分な文字は結果から削除されます。 |
戻り値の型: TEXT
例
-- 戻り値: a2x5
SELECT TRANSLATE('12345', '143', 'ax');REPEAT
文字列を指定された回数繰り返します。
構文
REPEAT(<str> TEXT, <number> INT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 繰り返す文字列。 |
number | はい | 繰り返しの回数。 |
戻り値の型: TEXT
例
-- 戻り値: PgPgPgPg
SELECT REPEAT('Pg', 4);STARTS_WITH
文字列が指定されたプレフィックスで始まる場合に true を返します。
構文
STARTS_WITH(<str> TEXT, <prefix> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
prefix | はい | チェックするプレフィックス。 |
戻り値の型: BOOLEAN (t は true、f は false)
例
-- 戻り値: t
SELECT STARTS_WITH('alphabet', 'alph');PARSE_IDENT
完全修飾 SQL 識別子文字列を解析し、そのコンポーネントを配列として返します。引用符で囲まれていないコンポーネントは小文字に変換され、引用符で囲まれたコンポーネントは大文字と小文字が維持されます。
構文
PARSE_IDENT(<quali_iden> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
quali_iden | はい | 完全修飾テーブル名などの完全修飾 SQL 識別子。 |
戻り値の型: TEXT (配列形式)
例
-- 戻り値: {"SomeSchema","sometable"}
SELECT PARSE_IDENT('"SomeSchema".someTable');QUOTE_IDENT
有効な SQL 識別子として引用符で囲まれた文字列を返します。必要に応じて二重引用符を追加します (たとえば、文字列にスペースや、そうでなければ小文字に変換される大文字が含まれている場合)。
構文
QUOTE_IDENT(<str> TEXT)戻り値の型: TEXT
例
-- 戻り値: "Foo bar"
SELECT QUOTE_IDENT('Foo bar');QUOTE_LITERAL
有効な SQL 文字列定数として引用符で囲まれた文字列を返します。必要に応じて単一引用符をエスケープします。
構文
QUOTE_LITERAL(<str> TEXT)戻り値の型: TEXT
例
-- 戻り値: 'O''Reilly'
SELECT QUOTE_LITERAL(E'O\'Reilly');TO_HEX
整数をその 16 進数表現に変換します。
構文
TO_HEX(<number> INT | BIGINT)戻り値の型: TEXT
例
-- 戻り値: 7fffffff
SELECT TO_HEX(2147483647);TO_NUMBER
フォーマットモデルを使用して、フォーマットされた文字列を数値に変換します。
構文
TO_NUMBER(<str1> TEXT, <str2> TEXT)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str1 | はい | 変換する文字列。 |
str2 | はい | 文字列の解析方法を定義するフォーマットモデル。 |
戻り値の型: NUMERIC
例
-- 戻り値: -12454.8
SELECT TO_NUMBER('12,454.8-', '99G999D9S');PLVSTR.RVRS
文字列の一部または全部を反転させます。これは Oracle 互換の関数であり、orafce 拡張機能が必要です。設定手順については、「Oracle 互換関数」をご参照ください。
構文
文字列全体を反転:
PLVSTR.RVRS(<str> TEXT)開始位置から末尾まで反転:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER)指定された範囲を反転:
PLVSTR.RVRS(<str> TEXT, <start> INTEGER, <end> INTEGER)パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
str | はい | 対象文字列。 |
start | いいえ | 反転する範囲の開始位置 (1 から始まる)。デフォルト:1。 |
end | いいえ | 反転する範囲の終了位置。デフォルト:文字列の末尾。 |
戻り値の型: TEXT
例
-- 戻り値: sergoloH (文字列全体を反転)
SELECT PLVSTR.RVRS('Hologres');-- 戻り値: sergo (位置 4 から末尾まで反転)
SELECT PLVSTR.RVRS('Hologres', 4);-- 戻り値: rg (位置 5-6 を反転)
SELECT PLVSTR.RVRS('Hologres', 5, 6);ROW
現在の行の行番号を返します。Hologres V1.3 以降でサポートされています。
インスタンスを V1.3 以降にアップグレードするには、「インスタンスのアップグレード」をご参照ください。サポートが必要な場合は、Hologres DingTalk グループにご参加ください。参加方法については、「オンラインサポートの利用方法」をご参照ください。
構文
ROW(<val1>, <val2>, ...)戻り値の型: ARRAY または TEXT
例
次の例では、列 a と列 b の値が等しい行を返します。
CREATE TABLE row_test (
a text,
b text
);
INSERT INTO row_test VALUES ('0', '0'), ('1', '0');
SELECT a, b FROM row_test WHERE ROW(a, b) = ROW(b, a);結果:
a | b
--+--
0 | 0