Varchar の raw フィードを持つテーブルからデータをインポートしています。varchar の列を文字列列にインポートする必要があります。<column_name>::integer
と同様に使用してみto_number(<column_name>,'9999999')
ましたが、いくつかの空のフィールドがあるため、エラーが発生します。それらを空または null として新しいテーブルに取得する必要があります。
質問する
386404 次
10 に答える
151
大まかな推測: 値が空の文字列の場合、NULLIF を使用してそれを NULL に置き換えることができます。
SELECT
NULLIF(your_value, '')::int
于 2012-05-09T14:43:39.550 に答える
60
さらに進んで、この合体したフィールドを次のように制限することもできます。
SELECT CAST(coalesce(<column>, '0') AS integer) as new_field
from <table>
where CAST(coalesce(<column>, '0') AS integer) >= 10;
于 2012-12-01T13:38:19.930 に答える
30
NULL
空の列をsとして扱う必要がある場合は、これを試してください。
SELECT CAST(nullif(<column>, '') AS integer);
一方、NULL
避ける必要がある値がある場合は、次のことを試してください。
SELECT CAST(coalesce(<column>, '0') AS integer);
私は同意します、エラーメッセージは大いに役立ちます。
于 2012-05-09T14:44:01.107 に答える
29
NULL、特殊文字、または空の文字列が原因でエラーが発生しないようにする唯一の方法は、次のようにすることです。
SELECT REGEXP_REPLACE(COALESCE(<column>::character varying, '0'), '[^0-9]*' ,'0')::integer FROM table
于 2015-06-01T20:22:41.467 に答える
15
Lukas の投稿にコメントすることはできません (評判が少なすぎますか? 私はかなり新しいので)。
私のPGセットアップto_number(NULL)
では機能しないため、私の解決策は次のとおりです。
SELECT CASE WHEN column = NULL THEN NULL ELSE column :: Integer END
FROM table
于 2012-05-09T14:46:32.417 に答える