私は、次のクエリを実行しようとしています:PostgreSQL - varcharをintにキャストしていますか?
DELETE FROM table_name WHERE ID>9;
しかし、私にはできない「ID」フィールドは、型「varchar型」であるため。 どうすれば 'int'にキャストし、正しく動作させることができますか? (数字varchar
の値に変換するのではなく、の行をすべて削除する)
私は、次のクエリを実行しようとしています:PostgreSQL - varcharをintにキャストしていますか?
DELETE FROM table_name WHERE ID>9;
しかし、私にはできない「ID」フィールドは、型「varchar型」であるため。 どうすれば 'int'にキャストし、正しく動作させることができますか? (数字varchar
の値に変換するのではなく、の行をすべて削除する)
数値を文字列として保存する理由はわかりません。これは、テーブルから最初は0
ない2桁で始まるあらゆるid
を削除します
DELETE FROM table_name
WHERE regexp_matches(ID, '^[1-9][0-9]');
:あなたはより多くのような何かをしたいかもしれません。変換を試みると、すべてのIDが数字でない場合は変換エラーが発生する可能性があります。これは、intをオーバフローさせる長い数値に対しても機能します(numeric
はその問題を解決します)。
EDIT:一般的な解決のために
、私は私のようにそれを書くと思います:
where (case when regexp_matches(id, '^[0-9]+$')
then id::numeric
end) > 70000
case
が非数値id
S上の任意のエラーを回避する必要があります。
私は他人のプロジェクトに取り組んでいます。私はあなたのソリューションを本当に理解していませんでしたが、どうすればそれを一般化できますか? 「WHERE ID> 70000」のように – Gambit2007
'IDから削除する:ID:int> 9;' –
'ID'を数値として扱う必要がある場合は、テキストではなく数値列に格納することを検討してください。 –
最初の解決策を試してみましたが、整数の入力構文が無効です: "" – Gambit2007