• 締切済み

SQL型

SQLの型(CHAR、VARCHAR等)の種類と格納できる値の種類や大きさを教えてください。

みんなの回答

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.2

私にわかる範囲ですが、主なものです。 INTEGER: 符号つきバイナリ整数(31ビット精度) SMALLINT: 符号つきバイナリ整数(15ビット精度) DECIMAL(p[,q]): p桁の精度、小数点以下がq桁の浮動小数 FLOAT: 符号つき浮動小数 CHAR(n): 長さnの固定長文字列 VARCHAR(n): 最大長nの可変長文字列

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.1

ひとえにSQLと言ってもさまさまなRDBMSがありますし、具体的にお知りになりたいデータベース名や プラットフォームを明記されたほうが良いと思います。 補足してください。

mikmik_a
質問者

補足

X-OPENが定義しているSQL-92のSQL型を教えてください

関連するQ&A

  • SQLの型について

    ASP+SQL初心者、hiroと申します。 ASPからデータベースに 1'56.123 のような計測タイムなどを INSERTする場合、データベースの型は何にしたらよろしいのでしょうか? 今の所、varchar型で試しているのですが、「型が一致しません」と なってしまいます。 char型にCONVERTしても、うまくいきませんでした(結果は同じ)。 以前は、分・秒・1/1000 のように3分割してINSERTしていましたが、 できれば、今回は1つでINSERTしたいと思っています。 よろしくお願いします。

  • PL/SQL ORA-06502エラーに関して(動的SQL)

    こんにちは、いつもお世話になっております。 現在、会社で動的SQLを使用してとある開発をおこなっているのですが、 どうしても上手くいかないので、どなたか教えて下さいm(__)m 下記の動的SQL文で最後から2行目のSQL:DBMS_OUTPUT.PUT_LINE(varDel); を実行するとORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。のエラーが 発生します、過去ログやgoogleで検索をかけてみたのですが、 どうにも解決方法がわからず困っています・・・・ お知恵のある方、教えて下さいませm(__)m ※多分、sql文が長いせいだとは思うのですが、どうしても これ以上は短くできず、静的ではなく、動的で動かさなければならない という条件付きなんですが、宜しく御願いします。 DECLARE numkeepD NUMBER := 0; -- データ保管期間格納用 varAST VARCHAR2(4) := '**'; -- アクセス区分定義外格納用 varkeepD VARCHAR2(2000); -- KEEP_DAYS取得SQL文格納用 varDel VARCHAR2(2000); -- DELETE文格納用 BEGIN varkeepD := 'SELECT KEEP_DAYS FROM SMCI4T910 WHERE ACC_KBN = '''||varAST||''''; DBMS_OUTPUT.PUT_LINE(varkeepD); EXECUTE IMMEDIATE (varkeepD) INTO numkeepD; DBMS_OUTPUT.PUT_LINE(numkeepD); -- アクセスログデータ削除SQL文格納 varDel := 'DELETE FROM '||cTABLE_STCI1T910||' ST910 ' ||'WHERE ' ||'ST910.DELETE_FLG = SCIS_CTS.cDEL_NO AND ' ||'EXISTS(' ||'SELECT 1 ' ||'FROM SMCI4T910 SM910 ' ||'WHERE ' ||'ST910.ACC_KBN = SM910.ACC_KBN AND ' ||'ST910.ACC_CYMD < TO_CHAR(SYSDATE - SM910.KEEP_DAYS,''YYYYMMDD'') AND ' ||'ST910.ACC_KBN <> varAST AND ' ||'SM910.DELETE_FLG = SCIS_CTS.cDEL_NO)'; DBMS_OUTPUT.PUT_LINE(varDel); --EXECUTE IMMEDIATE (varDel) END;

  • SQLで文字列を時刻に型変換する方法

    SQLで文字列を時刻に型変換する方法を教えていただきたいです。 char型のAというカラムに'090000'が格納されています。 この値を time型のBというカラムに型変換して登録したいのですが、 cast(A as time) としてもエラーが出てしまうので、現在は cast(SubString(A,1,2)+':'+SubString(A,3,2)+':'+SubString(A,5,2) as time) と変換しています。 もっと簡単に変換する方法はありますでしょうか? ご教示頂けましたら、助かります。 宜しくお願い致します。

  • PL/SQLでの文字列と数値の比較について

    いつもお世話になっております。 次のように、今が午前中なら「AM」と表示するPL/SQLのプログラムを考えています。 BEGIN if TO_CHAR(SYSTIMESTAMP,'hh24')<12 THEN DBMS_OUTPUT.PUT_LINE('AM'); END if; END; / 動作しているように見えるのですが、TO_CHARはVARCHAR2型を返すとマニュアルに書いてありました。TO_CHARが返す値は数値に変換したほうがよいのでしょうか。あるいはPL/SQLでも、文字列は数値に変換されるのでしょうか。 お教えいただけると助かります。 何卒よろしくお願いいたします。

  • DELPHIでSQLテーブルをグリッドに読み込みしたい

    DELPHI6を使っております。素人です。 以下のようなプログラムを書きたいと思っております。 SQLテーブルに a_tbl というテーブルをつくり、 a_id varchar2 (一意) a_namae varchar2 a_kubun varchar2 という項目を作りました。 delphiでは、editboxを設置して、edit1という名前をつけました。 また、ボタン、グリッドを設置しました。 行いたい作業は以下です。 ・edit1に値を入力し、ボタンをクリックする ・「a_id」に格納されている値と、「edit1」に入力した文字とが一致するところの「a_namae」、「a_kubun」をグリッドに表示させる(編集はできない) どのようなプログラムにすればできますでしょうか?

  • c言語のchar型とvarchar型の関係性

    例えば、構造体で定義したvarcharの値(顧客番号など)をmain関数内から、内部関数のchar*型の引数へ、事前にchar型へ変換することなく渡すことはできるのでしょうか?

  • Oracle データベース SQL

    質問させてください。 SQLについて教えてください。 SELECT文を作っていて、WHERE句で データを追加した日の指定(INSERT_DATE)を本日、というのをしたいと思っているのですが、なかなかできません。 格納するデータ型は、CHAR型なので WHERE INSERT_DATE =  TO_CHAR(SYSDATE, 'YYYYMMDD') で、試したのですができません…。 SQL実行はするのですが、該当なしになります。 教えていただければ、助かります。

  • SQLの表示を整える

    SQLの表示を見やすくしたく色々調べているのですが、 下記の【以下のような表示にしたい!】のような 表示にするにはどうすればよいでしょうか? 【何もsetしない場合】 SQL> desc TBL 名前 NULL? 型 --------- -------- ---------------------------- ID NOT NULL VARCHAR2(32) TYPE NOT NULL VARCHAR2(2) CORP NOT NULL VARCHAR2(32) CRT NOT NULL DATE SQL> select ID,TYPE,CORP,CRT from TBL; ID -------------------------------------------------------------------------------- TYPE ------ CORP -------------------------------------------------------------------------------- CRT -------- admin U 99 05-08-22 ID -------------------------------------------------------------------------------- TYPE ------ CORP -------------------------------------------------------------------------------- CRT -------- * G 99 05-08-22 【setした場合】 SQL> set linesize 10 SQL> set pagesize 50 SQL> select ID,TYPE,CORP,CRT from TBL; ID ---------- TYPE ------ CORP ---------- CRT -------- admin U 99 05-08-22 * G 99 05-08-22 【以下のような表示にしたい!】 (要は、ID,TYPE,CORP,CRPの各列の下(真下)に値を表示したい) ID________TYPE__CORP______CRT ---------------------------------- admin_____U_____99________05-08-22 *___________G_____99________05-08-22 #<余談> #上記'_'は空白です。 #複数の空白を記入しても1文字分しか表示されないため、このようなことをしています。(これも上手く表示できてませんが) #教えて!gooで”複数の空白を連続して表示する”場合、 #どのように記入すればよいでしょうか? よろしくお願いします。

  • 【PL/SQL】LOOPした動的SQLにてFETCHができない

    OracleのPL/SQLで FOR .. LOOP内にて動的SQLを使い SELECTしてきた値を順次FETCHして配列に格納していきたいのですが、 LOOPの1件目のみFETCHがされて2件目以降は全てNULLになってしまいます。SQL文は間違っていません。DBMS_SQL.LAST_ROW_COUNTで1件以上の検索結果があることも確認済みです。 なぜでしょう?教えて下さい! EXECUTE IMMEDIATEをLOOP内で使うことに問題あり? 簡略化した例です。p_noにはすでに文字列格納済みと見てください。 txtsql VARCHAR2(1000); -- 動的SQL mkin INTEGER; fornum1 INTEGER; max_count INTEGER; -- ループされる最大件数 TYPE type_mkin IS TABLE OF NUMBER(10) INDEX BY BINARY_INTEGER; TYPE type_pno IS TABLE OF CHAR(10) INDEX BY BINARY_INTEGER; mkin type_mkin; p_no type_pno; BEGIN FOR fornum1 IN 1 .. max_count LOOP txtsql := 'SELECT SUM(TPSV_NO) ' || ' FROM ACTV || ' WHERE PRI_NO= ' || p_no(fornum1); EXECUTE IMMEDIATE txtsql INTO mkin(fornum1); DBMS_OUTPUT.PUT_LINE(mkin(fornum1)); END LOOP; END;

  • StatementクラスのexecuteQueryメソッドを使用したSQLの発行について

    StatementクラスのexecuteQueryメソッドを使用したSQLの発行について教えてください。 JavaでMySQLのデータベースからデータを取得するため、 executeQueryメソッドを使用してSQLの発行を行ったのですが、select文が正常に実行されずに困っています。(where句の条件が引っかからずに困っています。) 【前提】 ・カラム「name」の値に「name(nameという文字)」が入っている状態。 ・INT型、CHAR型で定義されたカラムの値は取得できる ・VARCHAR型で定義された、カラムの値が取得できない 【状況】  VARCHAR型で定義された、カラムの値が取得できない場合というのが、java側で、  stmt.executeQuery("SELECT * from customer where name='name'") というようにSQL文を発行した場合です。  MySQLのコマンドプロンプトからダイレクトに投げた場合や、  またDBViewerを使用した場合は、Where句の「name='name'」で引っかかったデータが正常に返ってくるのですが、  Javaから発行した場合のみ「VARCHAR型で定義されているカラムの値が取れない」という状況なのです。  (考えられることとしては、SQL発行時「SELECT * from customer where name='name'」 の 「'name'」が、別の何かに変わっているのかな?(文字コードなどが関係しているのか?)など考えているのですが、解決できず困っております。)   一体どこに問題があるのでしょうか?   (CHAR型、INT型のデータは正常にJava側で読めるのに、VARCHAR型の値をwhere句にした場合に限って、正常にデータ抽出できない、という点が腑に落ちないのですが・・・ SQLエラーを吐く訳ではなく、抽出条件が成立していない形なのです)   【実行環境】 ・Windows XP Pro ・eclipse3.4(all in one eclipse) ・Java1.6 ・TomCat6.0 ・MySQL5.0 (文字コード:UTF-8)

    • ベストアンサー
    • Java