PostgreSQLで文字列を整数に変換する方法
PostgreSQLで文字列を整数にキャストする方法
-- 文字列 "123" を整数に変換
SELECT CAST('123' AS integer);
-- 結果: 123
しかし、文字列が数値に変換できない場合、エラーが発生します。
-- 文字列 "abc" を整数に変換
SELECT CAST('abc' AS integer);
-- エラー: 無効な数値表記
エラー発生時に 0 を返すには、COALESCE()
関数と組み合わせて使用します。
-- 文字列を整数に変換し、エラー発生時は 0 を返す
SELECT COALESCE(CAST('abc' AS integer), 0);
-- 結果: 0
COALESCE()
関数は、最初の引数が NULL または空の場合、2番目の引数を返します。
その他のキャスト方法
CAST()
関数以外にも、文字列を整数に変換する方法はいくつかあります。
::
演算子
-- 文字列 "123" を整数に変換
SELECT '123'::integer;
-- 結果: 123
to_number()
関数
-- 文字列 "123" を整数に変換
SELECT to_number('123');
-- 結果: 123
PostgreSQLで文字列を整数にキャストするには、CAST()
関数、COALESCE()
関数、::
演算子、to_number()
関数などを使用できます。
-- テーブル作成
CREATE TABLE example (
id integer,
name text
);
-- データ挿入
INSERT INTO example (id, name) VALUES (1, 'John Doe');
INSERT INTO example (id, name) VALUES (2, 'Jane Doe');
INSERT INTO example (id, name) VALUES (3, 'Alice');
-- 文字列を整数に変換し、エラー発生時は 0 を返す
SELECT id, COALESCE(CAST(name AS integer), 0) AS name_int
FROM example;
-- 結果:
-- id | name_int
-- -- | --
-- 1 | 1
-- 2 | 2
-- 3 | 0
文字列を整数に変換する他の方法
CASE 式
-- 文字列を整数に変換し、エラー発生時は 0 を返す
SELECT id,
CASE
WHEN name ~ '^[0-9]+$' THEN CAST(name AS integer)
ELSE 0
END AS name_int
FROM example;
このコードは、name
が数字のみで構成されている場合、CAST(name AS integer)
を返し、そうでない場合は 0 を返します。
正規表現を使用して、文字列が数値に変換できるかどうかをチェックすることができます。
-- 文字列を整数に変換し、エラー発生時は 0 を返す
SELECT id,
CASE
WHEN name ~ '^[0-9]+$' THEN REGEXP_REPLACE(name, '^0*', '')::integer
ELSE 0
END AS name_int
FROM example;
このコードは、name
の先頭の 0 を削除し、残りの文字列を整数に変換します。
try_cast() 関数
PostgreSQL 14 以降では、try_cast()
関数を使用して、文字列を整数に変換することができます。
-- 文字列を整数に変換し、エラー発生時は NULL を返す
SELECT id, try_cast(name AS integer) AS name_int
FROM example;
このコードは、name
を整数に変換し、エラーが発生した場合は NULL を返します。
PostgreSQLで文字列を整数に変換するには、さまざまな方法があります。
sql postgresql casting