dポイントプレゼントキャンペーン実施中!

こんにちは。

今、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だけにもっと大きいのですが、
わかりやすいように小さくしてあります。

上記のような動きを実現するにはどのように記述すればよろしいでしょうか?

A 回答 (2件)

update test_table set test = test / 10;


でいいと思います。
整数だし。
    • good
    • 0
この回答へのお礼

なるほどなるほどです。

できました。ありがとうござました。

お礼日時:2004/12/10 14:19

こんにちは。



普通に「TO_NUMBER」とかで数値型に変換できないのでしょうか?
(bigintだからダメなのかなぁ・・・?)

ダメなら10で割ってしまって、小数を切り捨てるとか・・・。

自信ないです・・・すみません。
(^^ゞ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す