blog

PostgreSQL文字列関数

UCASEの文字列関数は、主に文字列操作に使用されます。...

Jul 8, 2025 · 15 min. read
シェア

PostgreSQLの文字列関数は主に文字列操作に使用されます。以下の表に重要な文字列関数の詳細を示します:

アスキー(str)

文字列 str の左端の文字の数値を返します。 str が空文字列の場合は 0 を返します。 str が NULL の場合は NULL を返します。 ASCII() は、0 から 255 までの数値を持つ文字に対して動作します。は、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) 

BIT_LENGTH(str)

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

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

CHAR_LENGTH(str)

文字列 str の長さを文字数で返します。 マルチバイト文字は 1 文字と数えます。this は、2 バイト文字を 5 文字含む文字列の場合、LENGTH() は 10 を返し、CHAR_LENGTH() は 5 を返すことを意味します。は、2 バイト文字を 5 文字含む文字列の場合、LENGTH() は 10 を返し、CHAR_LENGTH() は 5 を返すことを意味します。

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

CHARACTER_LENGTH(str)

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

CONCAT(str1,str2,...)

すべての引数がバイナリ以外の文字列の場合、結果はバイナリ以外の文字列になります。引数にバイナリ文字列が含まれる場合、結果はバイナリ文字列となります。 数値引数は等価なバイナリ文字列形式に変換されます。これを避けたい場合は、明示的な文字列形式を使用することができます。これを避けたい場合は、thisの例のように明示的な型キャストを使用することができます:

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

#p#

CONCAT_WS(separator,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) 

LCASE(str)

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

LEFT(str,len)

文字列 str の左端 len 文字、または引数のいずれかが NULL の場合は NULL を返します。

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

LENGTH(str)

文字列 str の長さをバイト数で返します。 マルチバイト文字は複数バイトとして数えます。2バイト文字を5つ含む文字列の場合、LENGTH() は 10 を返しますが、CHAR_LENGTH() は 5 を返します。

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

LOWER(str)

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

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

LPAD(str,len,padstr)

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

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

LTRIM(str)

文字列 str から先頭の空白文字を取り除いたものを返します。

testdb=# SELECT LTRIM('  barbar'); 
+---------------------------------------------------------+ 
| LTRIM('  barbar')                                       | 
+---------------------------------------------------------+ 
| barbar                                                  | 
+---------------------------------------------------------+ 

1 row in set  

MID(str,pos,len)

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

POSITION(substr IN str)

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

QUOTE_IDENT(文字列 text)、QUOTE_LITERAL(文字列 text)、QUOTE_LITERAL(値 anyelement)、QUOTE_NULLABLE(値 anyelement)

これらの関数はすべて、SQL文の文字列の識別子として使用できるように、与えられた文字列を適切に引用符で囲んで返します。 関数QUOTE_IDENTでは、必要な場合にのみ引用符が付加されます。関数QUOTE_IDENTでは、必要な場合のみ引用符が付加されます。 関数QUOTE_LITERALでは、埋め込まれた単一引用符とバックスラッシュが適切に二重引用符にされます。 値が渡された場合、与えられた文字列を強制的に引用符で囲みます。関数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) 

#p#

expr REGEXP パターン

REGEXP_MATCHES(string text, pattern text [, flags text]) 関数は、exprとpatternのパターンマッチを行います。exprがpatternにマッチすれば1を返し、マッチしなければ0を返します。REGEXP_MATCHES は、バイナリ文字列で使用する場合を除いて、大文字小文字を区別しません。

REGEXP_REPLACE(string text, pattern text, replacement text [, flags text]) 関数は、POSIX 正規表現にマッチする部分文字列を置き換えます。

REGEXP_SPLIT_TO_ARRAY(string text, pattern text [, flags text ]), 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) 

REPEAT(str,count)

文字列 str を count 回繰り返した文字列を返します。 count が 1 未満の場合は空の文字列を返します。 str または count が NULL の場合は NULL を返します。

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

REPLACE(str,from_str,to_str)

文字列 from_str が文字列 to_str で置換された文字列 str を返します。を検索する場合、大文字と小文字を区別します。

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

REVERSE(str)

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

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

RIGHT(str,len)

文字列 str の右端 len 文字、または引数のいずれかが NULL の場合は NULL を返します。

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

RPAD(str,len,padstr)

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

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

RTRIM(str)

文字列 str から末尾の空白文字を取り除いたものを返します。

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

#p#

SUBSTRING(str,pos)

SUBSTRING(str FROM pos)

SUBSTRING(str,pos,len)

SUBSTRING(str FROM pos FOR len)

len引数のない書式は、文字列strからposの位置から始まる部分文字列を返します。 len引数のある書式は、文字列strからposの位置から始まるlen文字分の部分文字列を返します。FROMを使用する書式は標準SQL構文です。この "場合"、部分文字列の先頭は、文字列の先頭ではなく、文字列の末尾からpos文字目です。this "関数のどの形式でも、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)  

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

TRIM([remstr FROM] str)

remstrの接頭辞または接尾辞をすべて取り除いた文字列strを返します。 BOTH、LEADING、TRAILINGのいずれの指定子も与えられない場合、BOTHとみなされます。

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) 

UCASE(str)

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

UPPER(str)

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

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

Read next

ネットワーク管理者が知っておくべきルータの機能

企業のLAN管理のために、ネットワーク管理者は、より多くの作業負荷は、LANのセキュリティ管理を強化する必要性は、ネットワーク機器を使用する必要がありますされます。そして、ルータ機能の普遍的な使用のために、ネットワーク管理者は、ルータの機能の値を再生するためにされている?以下は、ルータの機能を紹介します。

Jul 8, 2025 · 2 min read