Postgresql-string-functions

提供:Dev Guides
移動先:案内検索

PostgreSQL-文字列関数

PostgreSQLの文字列関数は、主に文字列操作に使用されます。 次の表は、重要な文字列関数の詳細です-

S. No. Name & Description
1

ASCII()

左端の文字の数値を返します

2

BIT_LENGTH()

引数の長さをビット単位で返します

3

CHAR_LENGTH()

引数の文字数を返します

4

CHARACTER_LENGTH()

CHAR_LENGTH()の同義語

5

CONCAT_WS()

セパレーターで連結を返します

6

CONCAT()

連結された文字列を返します

7

LCASE()

LOWER()の同義語

8

LEFT()

指定された左端の文字数を返します

9

LENGTH()

文字列の長さをバイト単位で返します

10

LOWER()

引数を小文字で返します

11

LPAD()

指定された文字列で左詰めされた文字列引数を返します

12

LTRIM()

先行スペースを削除します

13

MID()

指定された位置から始まる部分文字列を返します

14

POSITION()

LOCATE()の同義語

15

QUOTE()

SQLステートメントで使用するために引数をエスケープします

16

REGEXP

正規表現を使用したパターンマッチング

17

REPEAT()

文字列を指定された回数繰り返します

18

REPLACE()

指定した文字列の出現を置き換えます

19

REVERSE()

文字列の文字を反転します

20

RIGHT()

指定された右端の文字数を返します

21

RPAD()

指定した回数だけ文字列を追加します

22

RTRIM()

末尾のスペースを削除します

24

SUBSTRING(), SUBSTR()

指定された部分文字列を返します

25

TRIM()

先頭および末尾のスペースを削除します

26

UCASE()

UPPER()の同義語

27

UPPER()

大文字に変換します

[function_ascii]#

ASCII(str)

文字列strの左端の文字の数値を返します。 strが空の文字列の場合、0を返します。 strがNULLの場合、NULLを返します。 ASCII()は、0〜255の数値を持つ文字に対して機能します。

testdb=# SELECT ASCII('2');
+---------------------------------------------------------+
| ASCII('2')                                              |
+---------------------------------------------------------+
| 50                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

testdb=# SELECT ASCII('dx');
+---------------------------------------------------------+
| ASCII('dx')                                             |
+---------------------------------------------------------+
| 100                                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_bit-length]#

BIT_LENGTH(str)

文字列strの長さをビット単位で返します。

testdb=# SELECT BIT_LENGTH('text');
+---------------------------------------------------------+
| BIT_LENGTH('text')                                      |
+---------------------------------------------------------+
| 32                                                      |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_char-length]#

CHAR_LENGTH(str)

文字で測定された文字列strの長さを返します。 マルチバイト文字は単一の文字としてカウントされます。 これは、5バイトの2バイト文字を含む文字列の場合、LENGTH()は10を返し、CHAR_LENGTH()は5を返すことを意味します。

testdb=# SELECT CHAR_LENGTH('text');
+---------------------------------------------------------+
| CHAR_LENGTH('text')                                     |
+---------------------------------------------------------+
| 4                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_character-length]#

CHARACTER_LENGTH(str)

CHARACTER_LENGTH()はCHAR_LENGTH()の同義語です。

[function_concat]#

CONCAT(str1、str2、…​)

引数を連結した結果の文字列を返します。 1つ以上の引数があります。 すべての引数が非バイナリ文字列である場合、結果は非バイナリ文字列です。 引数にバイナリ文字列が含まれる場合、結果はバイナリ文字列になります。 数値引数は、同等のバイナリ文字列形式に変換されます。あなたはそれを避けたい場合は、この例のように、明示的な型キャストを使用することができます-

testdb=# SELECT CONCAT('My', 'S', 'QL');
+---------------------------------------------------------+
| CONCAT('My', 'S', 'QL')                                 |
+---------------------------------------------------------+
| MySQL                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_concat-ws]#

CONCAT_WS(区切り文字、str1、str2、…​)

CONCAT_WS()は、Concatenate With Separatorの略で、CONCAT()の特別な形式です。 最初の引数は、残りの引数の区切り文字です。 連結されるストリングの間にセパレーターが追加されます。 区切り文字は、残りの引数と同様に文字列にすることができます。 区切り文字がNULLの場合、結果はNULLです。

testdb=# SELECT CONCAT_WS(',','First name','Last Name' );
+---------------------------------------------------------+
| CONCAT_WS(',','First name','Last Name' )                |
+---------------------------------------------------------+
| First name, Last Name                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_lcase]#

LCASE(str)

LCASE()はLOWER()の同義語です。

[function_left]#

LEFT(str、len)

文字列strの左端のlen文字を返します。引数がNULLの場合はNULLを返します。

testdb=# SELECT LEFT('foobarbar', 5);
+---------------------------------------------------------+
| LEFT('foobarbar', 5)                                    |
+---------------------------------------------------------+
| fooba                                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_length]#

長さ(str)

バイト単位で測定された文字列strの長さを返します。 マルチバイト文字は複数バイトとしてカウントされます。 これは、5バイトの2バイト文字を含む文字列の場合、LENGTH()は10を返し、CHAR_LENGTH()は5を返すことを意味します。

testdb=# SELECT LENGTH('text');
+---------------------------------------------------------+
| LENGTH('text')                                          |
+---------------------------------------------------------+
| 4                                                       |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_lower]#

LOWER(str)

現在の文字セットマッピングに従って、すべての文字が小文字に変更された文字列strを返します。

testdb=# SELECT LOWER('QUADRATICALLY');
+---------------------------------------------------------+
| LOWER('QUADRATICALLY')                                  |
+---------------------------------------------------------+
| quadratically                                           |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_lpad]#

LPAD(str、len、padstr)

文字列strを、len文字の長さまで文字列padstrで左詰めで返します。 strがlenより長い場合、戻り値はlen文字に短縮されます。

testdb=# SELECT LPAD('hi',4,'??');
+---------------------------------------------------------+
| LPAD('hi',4,'??')                                       |
+---------------------------------------------------------+
| ??hi                                                    |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_ltrim]#

LTRIM(str)

先頭のスペース文字を削除した文字列strを返します。

testdb=# SELECT LTRIM('  barbar');
+---------------------------------------------------------+
| LTRIM('  barbar')                                       |
+---------------------------------------------------------+
| barbar                                                  |
+---------------------------------------------------------+
1 row in set (0.00 sec)

[function_mid]#

MID(str、pos、len)

MID(str、pos、len)はSUBSTRING(str、pos、len)の同義語です。

[function_position]#

POSITION(substr IN str)

POSITION(substr IN str)は、LOCATE(substr、str)の同義語です。

[function_quote]#

QUOTE_IDENT(string text)、QUOTE_LITERAL(string text)、QUOTE_LITERAL(value anyelement)、QUOTE_NULLABLE(value anyelement)

これらの関数はすべて、SQLステートメント文字列で識別子として使用するために適切に引用符で囲まれた指定の文字列を返します。 関数QUOTE_IDENTでは、必要な場合にのみ引用符が追加されます。 関数QUOTE_LITERALでは、埋め込まれた単一引用符とバックスラッシュが適切に二重化されます。 値が渡された場合、指定された値をテキストに強制し、リテラルとして引用します。 関数QUOTE_NULLABLEは、指定された値をテキストに強制し、リテラルとして引用します。または、引数がNULLの場合、NULLを返します。

以下は、これらすべての機能の例です-

testdb=# SELECT QUOTE_IDENT('Foo bar');
 quote_ident
-------------
 "Foo bar"
(1 row)


testdb=# SELECT QUOTE_LITERAL(E'O\'Reilly');
 quote_literal
---------------
 'O''Reilly'
(1 row)


testdb=# SELECT QUOTE_LITERAL(42.5);
 quote_literal
---------------
 '42.5'
(1 row)


testdb=# SELECT QUOTE_NULLABLE(42.5);
 quote_nullable
----------------
 '42.5'
(1 row)

[operator_regexp]#

expr REGEXPパターン

REGEXP_MATCHES(string text、pattern text [、flags text])関数は、exprとパターンのパターン一致を実行します。 exprがpatに一致する場合、1を返します。それ以外の場合は、0を返します。 exprまたはpatがNULLの場合、結果はNULLです。 REGEXP_MATCHESは、バイナリ文字列で使用する場合を除き、大文字と小文字を区別しません。

REGEXP_REPLACE(文字列テキスト、パターンテキスト、置換テキスト[、フラグテキスト])関数は、POSIX正規表現に一致する部分文字列を置換します。

REGEXP_SPLIT_TO_ARRAY(文字列テキスト、パターンテキスト[、フラグテキスト])、POSIX正規表現を区切り文字として使用して文字列を分割します。

REGEXP_SPLIT_TO_TABLE(string text、pattern text [、flags text])、POSIX正規表現を区切り文字として使用して文字列を分割します。

以下は、これらすべての機能の例です-

testdb=# SELECT REGEXP_MATCHES('ABCDEF','A%C%%');
 regexp_matches
----------------
(0 rows)


testdb=# SELECT REGEXP_REPLACE('Thomas', '.[mN]a.', 'M');
 regexp_replace
----------------
 ThM
(1 row)


testdb=# SELECT REGEXP_SPLIT_TO_ARRAY('hello world', E'\\s+');
 regexp_split_to_array
-----------------------
 {hello,world}
(1 row)


testdb=# SELECT REGEXP_SPLIT_TO_TABLE('hello world', E'\\s+');
 regexp_split_to_table
-----------------------
 hello
 world
(2 rows)

[function_repeat]#

REPEAT(str、count)

count回繰り返された文字列strで構成される文字列を返します。 countが1未満の場合、空の文字列を返します。 strまたはcountがNULLの場合、NULLを返します。

testdb=# SELECT REPEAT('SQL', 3);
   repeat
-----------
 SQLSQLSQL
(1 row)

[function_replace]#

REPLACE(str、from_str、to_str)

文字列from_strのすべての出現を文字列to_strに置き換えた文字列strを返します。 REPLACE()は、from_strを検索するときに、大文字と小文字を区別した一致を実行します。

testdb=# SELECT REPLACE('www.mysql.com', 'w', 'Ww');
      replace
------------------
 WwWwWw.mysql.com
(1 row)

[function_reverse]#

REVERSE(str)

文字の順序を逆にした文字列strを返します。

testdb=# SELECT REVERSE('abcd');
 reverse
---------
 dcba
(1 row)

[function_right]#

RIGHT(str、len)

文字列strから右端のlen文字を返します。引数がNULLの場合はNULLを返します。

testdb=# SELECT RIGHT('foobarbar', 4);
 right
-------
 rbar
(1 row)

[function_rpad]#

RPAD(str、len、padstr)

文字列strを、長さlen文字まで文字列padstrで右詰めして返します。 strがlenより長い場合、戻り値はlen文字に短縮されます。

testdb=# SELECT RPAD('hi',5,'?');
 rpad
-------
 hi???
(1 row)

[function_rtrim]#

RTRIM(str)

末尾のスペース文字を削除した文字列strを返します。

testdb=# SELECT RTRIM('barbar   ');
 rtrim
--------
 barbar
(1 row)

[function_substring]#

SUBSTRING(str、pos)、SUBSTRING(str FROM pos)、SUBSTRING(str、pos、len)、SUBSTRING(str FROM pos FOR len)

len引数のないフォームは、位置posから始まる文字列strから部分文字列を返します。 len引数を持つフォームは、位置posから始まる文字列strから長さlen文字の部分文字列を返します。 FROMを使用するフォームは、標準のSQL構文です。 posに負の値を使用することもできます。 この場合、サブストリングの先頭は、先頭ではなく、ストリングの末尾からのpos文字です。 この関数のどの形式でも、posに負の値を使用できます。

testdb=# SELECT SUBSTRING('Quadratically',5);
 substring
-----------
 ratically
(1 row)


testdb=# SELECT SUBSTRING('foobarbar' FROM 4);
 substring
-----------
 barbar
(1 row)


testdb=# SELECT SUBSTRING('Quadratically',5,6);
 substring
-----------
 ratica
(1 row)

[function_trim]#

TRIM([\ {BOTH | LEADING | TRAILING} [remstr] FROM] str)、TRIM([remstr FROM] str)

すべてのremstrプレフィックスまたはサフィックスが削除された文字列strを返します。 BOTH、LEADING、またはTRAILINGの指定子が指定されていない場合、BOTHが想定されます。 remstrはオプションであり、指定しない場合はスペースが削除されます。

testdb=# SELECT TRIM('  bar   ');
 btrim
-------
 bar
(1 row)


testdb=# SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
 ltrim
--------
 barxxx
(1 row)


testdb=# SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
 btrim
-------
 bar
(1 row)


testdb=# SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
 rtrim
-------
 bar
(1 row)

[function_ucase]#

UCASE(str)

UCASE()はUPPER()の同義語です。

[function_upper]#

UPPER(str)

現在の文字セットマッピングに従って、すべての文字が大文字に変更された文字列strを返します。

testdb=# SELECT UPPER('manisha');
  upper
---------
 MANISHA
(1 row)