• ベストアンサー

型について

こんにちは。 今、test_tableがあり、testフィールドがあります。 testフィールドはbigintです。 今、何を実行したいかというと、 testフィールドに格納されている、 12345 23456 34567 45678 56789 のレコードの一番最後の桁(1の位)を削除して更新したいんです。 1234 2345 3456 4567 5678 update test_table set test = substring(test, 1, length(test) - 1); 上記を実行すると --------------------------------------------------- column "test" is of type bigint but expression is of type text You will need to rewrite or cast the expression --------------------------------------------------- とメッセージがでます。これは恐らく substringが返す型がtextなのにsetしようとしている フィールドがbigintの為、型が違うよって言っているんですよね。 ※本当は扱う値はbigintだけにもっと大きいのですが、 わかりやすいように小さくしてあります。 上記のような動きを実現するにはどのように記述すればよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

update test_table set test = test / 10; でいいと思います。 整数だし。

653
質問者

お礼

なるほどなるほどです。 できました。ありがとうござました。

その他の回答 (1)

回答No.1

こんにちは。 普通に「TO_NUMBER」とかで数値型に変換できないのでしょうか? (bigintだからダメなのかなぁ・・・?) ダメなら10で割ってしまって、小数を切り捨てるとか・・・。 自信ないです・・・すみません。 (^^ゞ

関連するQ&A