trim関数

trim関数を使用すると、文字列から先行文字または後続文字(あるいはその両方)を切り捨てることができます。

構文

returnvalue trim(source [, position [, trim_character]])

source ::= any*
position ::= "leading"|"trailing"|"both"
trim_character ::= string*
returnvalue ::= string

セマンティクス

source

切り捨てる必要がある入力文字列。この引数は、一連の文字列に暗黙的にキャストされます。

source引数のみを指定した場合、先頭と末尾の空白は削除されます。

position
この引数は、先行文字または後続文字、あるいはその両方を削除するかどうかを示します。この引数に指定できる有効な値は、次のとおりです。
  • leadingを指定すると、trim_character引数と等しい文字が文字列の先頭から削除されます。
  • trailingを指定すると、trim_character引数と等しい文字が文字列の末尾から削除されます。
  • bothを指定すると、trim_character引数と等しい文字が文字列の先頭と末尾の両方から削除されます。
  • 値を指定しない場合は、both値が指定されているとみなされます。
  • 上の有効値以外の値を指定すると、NULLが返されます。
trim_character

この引数では、ソース文字列から削除する必要がある文字を指定します。この引数を指定しない場合は、空白がデフォルト値として使用されます。

この引数には1文字のみ使用できます。2文字以上ある場合は、最初の文字が使用されます。

空の文字列を指定した場合、切捨ては行われません。

return_value

いずれかの引数がNULLの場合はNULLを返します。

引数が空の順序であるか、複数の項目がある順序の場合はNULLを返します。

例11-9 trim関数

次の表を作成し、表に値を挿入して、trim、ltrimおよびrtrim関数の例を実行します。

CREATE TABLE trim_demo (
  id INTEGER,
  name STRING,
  yearofbirth STRING,
  PRIMARY KEY (id)
);

INSERT INTO trim_demo VALUES (10, "  Peter  ", 1980);
INSERT INTO trim_demo VALUES (20, "Mary", 1973);
INSERT INTO trim_demo VALUES (30, "  Oliver", 2000);
INSERT INTO trim_demo VALUES (40, "John  ", 2000);

SELECT * FROM trim_demo;
 +----+-----------+-------------+
 | id |   name    | yearofbirth |
 +----+-----------+-------------+
 | 10 |   Peter   | 1980        |
 | 20 | Mary      | 1973        |
 | 30 |   Oliver  | 2000        |
 | 40 | John      | 2000        |
 +----+-----------+-------------+

例11-10 trim関数

この例では、idとyearofbirthがtrim_demo表から選択されます。yearofbirthの末尾のゼロは、trim関数を使用して削除されます。

SELECT id, trim(yearofbirth,"trailing",'0') FROM trim_demo;
 +----+----------+
 | id | Column_2 |
 +----+----------+
 | 10 | 198      |
 | 20 | 1973     |
 | 30 | 2        |
 | 40 | 2        |
 +----+----------+

例11-11 trim関数

この例では、'19'がtrim_characterとして指定されています。ただし、セマンティクスに従って、最初の文字'1'のみが切捨ての対象になります。

SELECT id, trim(yearofbirth,"leading",'19') FROM trim_demo;
 +----+----------+
 | id | Column_2 |
 +----+----------+
 | 10 | 980      |
 | 20 | 973      |
 | 30 | 2000     |
 | 40 | 2000     |
 +----+----------+