私はSQLを初めて使用していて、数値とテキストで構成される文字列(たとえば "10 Windows")を持つテーブルを持っています。 。このテーブルから、文字列から "10"を抽出し、それを整数として新しい列に移動する必要があります(私はpgAdmin4を使用しています)CASTとSUBSTRING(pgAdmin 4)を使用しているときにpostgresqlでクエリの結果をフィルタリングする方法
数字を解析するクエリを書くことができましたその文字列を整数として新しい列に返します。ここから
SELECT data1, CAST(SUBSTRING(data1 FROM '(\d+)') AS INTEGER) AS data1_num
FROM events
、私は整数としてdata1_numという名前の列にDATA1内の文字列から数値を取得することができます。
しかし、以下のクエリでdata1_num = 27のすべての行を検索するためにフィルタリングすると、エラーが発生します。
SELECT data1, CAST(SUBSTRING(data1 FROM '(\d+)') AS INTEGER) AS data1_num
FROM events
WHERE data1_num = 27
エラー:
ERROR: column "data1_num" does not exist
LINE 3: WHERE data1_num = 27
^
********** Error **********
ERROR: column "data1_num" does not exist
SQL state: 42703
Character: 205
私は何かが足りないのですか?
私はこれがうまくいくと思いますし、data1_numが27だった行がゼロであっても、エラーは発生しません。