• ベストアンサー

型について

こんにちは。 今、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だけにもっと大きいのですが、 わかりやすいように小さくしてあります。 上記のような動きを実現するにはどのように記述すればよろしいでしょうか?

  • 653
  • お礼率36% (138/382)

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

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

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

653
質問者

お礼

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

その他の回答 (1)

回答No.1

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

関連するQ&A

  • Java 「参照型の型変換」について

    Java初心者です。 入門書を読んでいたら、「参照型の型変換」を説明している項目に 以下の方法で行うと書いてありました。 ==前提=== Personは親クラス Employeeは小クラス Engineerは孫クラス ======== (1)Engineer型からPerson型へ暗黙の型変換する場合 Person per1 = new Engineer(); (2)Person型からEngineer型へキャストする場合 Engineer eng1 = (Engineer) per1; (3)Person型からEmployee型へキャストする場合 Employee emp1 = (Employee) per1; ======== これ、変換の方法は上記で分かったのですが、 そもそも、 "何のために参照型の型変換を行うのか" "型変換を行うと、それぞれのオブジェクトの機能がどのように変わるのか" そういった説明が一切書いておらず、その意味するところが理解出来ませんでした。 スーパークラス型からサブクラス型にキャストする場合、 サブクラス型からスーパークラス型に暗黙の型変換する場合、 それぞれのオブジェクトの性質がどう変化するのでしょうか? メソッドやフィールドに対しての挙動が何か変わるのでしょうか? 基本データ型の型変換は分かり易いんですけどね。。 参照型はどうにも。。 教えて下さい!

    • ベストアンサー
    • Java
  • which will be of lenghについて

    be of ...について XXXフィールドはWK_XXX_CDにマップしていてそのコードの長さは6でしょう と言う意味で下記の文があるのですが、何故 be of lengthとofがあるのでしょうか? XXX field is mapped to WK_XXX_CD which will be of length 6 下記でとは意味が異なるのでしょうか? XXX field is mapped to WK_XXX_CD which length will be 6 ちなみにこの文章は(インド英語)の可能性があります。

  • 英文~関係代名詞~

    Language is nothing but set of human habits the purpose of which is to give expression to thoughts and feelings, and especially to impart them to others. 「言語は一連の人間の習慣にすぎず、その目的は考えや感情を表現し、とりわけそれらを他人に伝える  ことである。」 nothing but = only「~にすぎない」 a set of 「一連の」 impart 「~を分け与える」 【質問】 human habits the purpose of which is to give expression の部分で、名詞+名詞になっているのですが、文法的には問題ないのでしょうか?  たとえば、本文をもともとの2文に分けてみると、 (1)Language is nothing but set of human habits. (2)The purpose of it is to give expression~.(=Its purpose is to give expression~.) になり、このことから、本文以外にも、もう2パターンの文が作れます。 of which the purpose is to give expression~. whose(=Its) purpose is to give expression~. 形を変えたら、納得いくのですが、本文は名+名となっていて変だなと感じました。

  • 実行時エラー3001「引数が間違った型、許容範囲外

    VBAのADOです。 このフィルタの文字列、どう改善すればいいか教えてください。 名前フィールドが「test」か「共通」でなおかつ、 対象外フィールドが0のみ抽出したいのですが 実行時エラー3001「引数が間違った型、許容範囲外、または競合しています。」 になります。 対象外フィールドのデータ型はYes/No型です。 rs.Filter = "名前 = 'test' or 名前 = '共通' and 対象外 = " & 0 rs.Filter = "名前 = 'test' or 名前 = '共通' and 対象外 = 0" どちらもダメでした。

  • 「引数が間違った型、許容範囲外、または競合しています。」で考えられる原因は?

    アクセス2003です。 ADOを使用してテーブルにフィルタをかけたいのですが 「引数が間違った型、許容範囲外、または競合しています。」となってしまいます。 コードはこれです↓ Sub test() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\○○\Desktop\○○.mdb" Set rs = New ADODB.Recordset rs.Open "テーブル1", cn, adOpenStatic, adLockPessimistic rs.Filter = "進捗=" & "未" rs.MoveFirst MsgBox rs("進捗") rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub ・「rs.Filter = "進捗=" & "未" 」の部分でなぜか上記のエラーになります。 ・違うフィールドなら問題なくできます。 ・存在しないフィールド名なら 「実行時エラー 3265 要求された名前、または序数に対する項目がコレクションで見つかりません。」 となります。 ・テーブル1に「進捗」というフィールドは存在し、データ型はテキスト型です。 何かわかる方ご回答いただければ幸いです。

  • 1万件のレコードの追加方法、主キーは億単位で不規則

    テスト用のテーブルを作りたいと思っています。しかし、主キーの部分が実際とはかけ離れた状態になってしまいます。 フィールド数が複数あり、同じ値でも構わないので1万件分のレコードを追加したいです。 やり方としては、 <1>主キーのフィールド以外の全部のフィールドを作ってデータを入れます。 <2>そしてから、INSERT INTO `aaa` SELECT * FROM `aaa`を1万件超えるまで繰り返し実行。 <3>主キーのフィールドをauto_increment指定して追加します。 <4>1万を超えるフィールドを削除するためにDELETE FROM `aaa` WHERE id>10000を実行 ※実際には主キーにauto_incrementを入れません。 ※実際には主キーのデータは数千万~億単位(89234521や000455839)の数字(型はBIGINT)で、増加の仕方はまちまちです。 auto_incrementを使わず、数千万単位の数字で、増加の仕方もまちまちな主キーのデータを追加する方法はないでしょうか。

    • ベストアンサー
    • MySQL
  • ACCESS2000VBAでエラー「型が一致しません」

    ACCESS2000で、フォーム上にボタンを作り、そのボタンをクリック時に 以下のイベント プロシージャを実行させています。 Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("採番_相談者") Dim Number rst.MoveFirst Number = rst!相談者番号 Number = Number + 1 Me.相談者NO = Number '相談者NOはフォーム上のテキストボックスです。 で上記 Set rst = dbs.OpenRecordset("採番_相談者") の所で、「実行時エラー 13 型が一致しません」とエラーになります。 テーブル:採番_相談者は、オートナンバー型のIDフィールドと相談者番号という7桁のテキスト型で ”1000001”が入っています。(ちなみに、数値型に変えても同じエラーでした。) 詳しい方教えてください。お願いします。

  • ExcelのVBAで、変数の型の種類の調べ方

    Asキーワードで、変数の型を調べる方法を教えてください。 CommandBarのCommandBarButtonのStateの状態を変更させようとして次のようなSubを作りました。 Sub testCommandBar() Dim MyCommandBar As CommandBar Dim MyControl As CommandBarButton Set MyCommandBar = Application.CommandBars("test") For Each MyControl In MyCommandBar.Controls MyControl.State = msoButtonMixed MyControl.State = msoButtonDown MyControl.State = msoButtonUp Next End Sub しかし、コントロールにボタンとコンボボックスを配置すると、ローカルウィンドで、型を見てもCommandBarButtonと、CommandBarComboBoxと型が分かれているため、当然上記のままだとエラーになります。で、安易にObject型(最上位)にするのではなくもうひとつ上のCommandBarButtonと、CommandBarComboBox共通の型ってどうやって調べればいいのでしょうか? たとえば、「Sheet1」と「Sheet2」の型の上位といえば「WookSheet」のように??(←これが正しいかも自信がないですが) 自分では、「Sheets」「WookSheet」「SheetXX」はそれぞれ型が違うってのは理解しているつもりです。(XXは数字) よろしくお願いいたします。 ついでに、上記のコードだと、ボタンだけの配置で、ステップインで実行させても、ボタンの状態が変化しません。別の質問でと思ったのですが、あつかましく教えていただければ幸いです。

  • 配列の中の値の型変換

    Array => [0] => Array  ['id'] => '10'  ['size'] => Array   ['height'] => '25.1'   ['width'] => '10.6'   ['length'] => '15.7'  ['name'] => 'shose'  ['comment'] => '' [1] => Array  ['id'] => '10'  ['size'] => Array   ['height'] => '25.1'   ['width'] => '10.6'   ['length'] => null  ['name'] => 'paper'  ['comment'] => 'color is red'   上記のように配列の中の要素の値が全てstring型で、値がない要素だけnullという配列があります。 この配列の全ての文字列を、  整数に変換可能ならint型に変換  浮動小数点型に変換可能ならfloat型に変換  数値に変換不可能ならstring型のまま  nullの場合はnullのまま にキャストしたいのですがどのようなコードになるのでしょうか? ネストの深さは一定ではありません。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • GCCで暗黙の型変換の警告を出したい

    情報が失われてしまうような代入について警告を出したいのですが、 どういったオプションを用いればよいでしょうか? コンパイラはGCCの3.x系か4.x系でお願いします。 以下のようなソースで型変換に関する警告がほしいんです。 --- test.c --- #include <stdio.h> int main(void) {   int a = 66000;   short b;   b = a; // <- 暗黙の型変換   printf("%d\n", b);   return 0; } 実行結果 $ ./test 464 以下のオプションを試しましたが、上記のソースでは 何の警告も出ませんでした。 -W -Wall -Wconversion -Wimplicit ご存知の方いらっしゃいましたら、どうかお助け下さい。