- ベストアンサー
カラムサイズの取得
度々の質問で少々気恥ずかしいのですが・・・ 先日カラム一覧を取得する方法として、多くのRDBMSではシステムカタログを 参照するのが一般的な方法ということを教えて頂きました。 現在pgAdminIIIを使って、システムカタログの中がどうなっているのか、 色々勉強しているのですが、カラムサイズを取得するにはどこを参照すれば 良いのでしょうか? たとえばvarchar(40)のカラムがあった場合に「40」 という数値を取得したいのですが・・・ どなたかご存知であれば、ご教授下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- chukenkenkou
- ベストアンサー率43% (833/1926)
関連するQ&A
- 行情報だけが欲しい(カラム名いらいない)
set(確かOracleだと)などを使って、カラム名とあとカラム名と行の間の-------を省く方法を教えて下さい。 実行の結果だけが欲しいのです。 あと、SQL実行結果のフィールドサイズ(カラムサイズ)を変更できませんか? SET TEXTSIZEだとvarcharが変えられいみたいです。何卒よろしくお願いします。
- 締切済み
- SQL Server
- ストアド内でカラム名一覧を取得
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ストアド内でカラム名一覧を取得、カンマで繋げてひとつの変数にまとめたい。 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 現在開発でストアドを使用する機会があり、そこで不明点が発生し悩んでおります。 以下、現状と質問です。 ■SQL SERVER 2000 ■テーブル(※)のカラム名一覧を取得し、 カラム名をカンマで繋げてひとつの変数に格納したいと思っています。 ※先の処理でカラムを取得したいテーブルをSELECTしており、 対象のテーブル名を変数に代入しています。 カラム一覧を取得するにあたり、以下のようにカーソルで習得し、 FETCHでカラム名を変数に格納しようと考えていましたが、 「'対象テーブル名'」には変数がいれられないので、どうしようかと悩んでいます。 DECLARE CURS_test CURSOR FOR SELECT name FROM dbo.syscolumns WHERE id IN (SELECT id FROM dbo.sysobjects WHERE name = '対象テーブル名') ORDER BY id, colid; 「sp_executesql」を使用してselect文を流そうとしたのですが、 複数ある列名を取得して、上記で記載しましたように カラム名をカンマで繋げてひとつの変数に格納する方法がわかりませんでした。 こういった場合、どのように考えて、どのように書けばよいのでしょうか。 まだ触り始めたばかりで、わからないことがわかっていない部分もあり、 質問内容でわかりにくい部分がありましたらご指摘いただければと思います。 どうぞよろしくお願いいたします。
- ベストアンサー
- SQL Server
- MySQL(5.5)1テーブル内のカラム数制限
首記、InnoDBであれば1000、MyISAMであれば4096という仕様かと思いますが、CREATE TABLEを実行するとカラム数1500くらいから #1117 Too many columns のエラーが出てしまい、カラム数の多いテーブル追加ができない状況です。 こちら、事象や考えられる原因、対処方法などご存じの方がいれば教示いただけますか。 またVARCHARの64K制限があるため多くのカラムはTEXTにしています。
- ベストアンサー
- MySQL
- カーソルで取得した項目のサイズについて質問です。。
カーソルで取得した項目のサイズについて質問です。。 SELECTした項目のサイズが下記の場合、 レコード格納変数.Cの最大サイズは(14)で、それ以上のバイト数値を代入すると エラーになると思ったのですが、エラーになりませんでした。(最大28バイトになった) レコード格納変数の取得した項目サイズは何で決まってくるのでしょうか? この項目を別テーブルのVARCHAR(20)の項目へ設定しようと思っているのですが、 理由がわからないので、このままでいいのか、サイズを考慮した設計にするべきか困っています。 <oracle 9i> TABLE1{A VARCHAR2(4), B VARCHAR2(10)} DECLARE CURSOR カーソル変数 IS SELECT A||B AS C FROM TABLE1; レコード格納変数 カーソル変数%ROWTYPE; BEGIN OPEN カーソル変数 LOOP FETCH カーソル変数 INTO レコード格納変数; EXIT WHEN カーソル変数%NOTFOUND; : レコード格納変数.C := VARCAHR2(15) --代入可能? : INSERT 項目1 VARCHAR(20) TABLE2 レコード格納変数.C; : END LOOP CLOSE カーソル変数 END;
- 締切済み
- Oracle
- DBのFLOATカラムに格納した値の取得
お世話になります。 MySQLのFLOATのカラムに9999999のような数値を格納すると、x.xxxxe+xxxのような値になってしまいます。 これを普通にselectで取得すると、x.xxxxe+xxxのままの数値なのですが、これを格納時点の999999のような数値に整形する方法はあるでしょうか? また、879.823928のような少数の値もよく判らないx.xxxxe+xxxのような値になっております。 この場合の整形方法もありませんでしょうか? ご教授ください。よろしくお願い致します。
- 締切済み
- PHP
- MySQLでvarchar型のデータの最大値を取得する方法
お世話になります。 どなたかご回答&アドバイスをよろしくお願い致します。 MySQLで、以下のように登録されているデータがあるとします。 ID(varchar) | name(varchar) 0000001 | ああああ 0000002 | いいいい 0000004 | ううううう それで、登録されているIDの最大値+1を取得したいのです。 IDのカラムのデータ型がIntならmaxで取得できると思うのですが、データ型がvarcharなので…。 レコードの数+1というのは、IDが必ずしも1から飛びがなく登録されているとは限らないので、 その方法は危ないのでできません。 上の例だと、「0000005」を取得したいです。 どうぞご教授お願い致します。
- ベストアンサー
- PHP
- 改行コードを削除して取得する方法はあるでしょうか?
改行コードを削除して取得する方法はあるでしょうか? DB2で開発しているのですが、charやvarcharやgraphicなどのカラムに改行コードが含まれた文字列が入っていた場合、改行コードを抜いて取得する方法などはあるでしょうか。 よろしくければアドバイス頂けると嬉しいです。
- ベストアンサー
- その他(データベース)
- クエリー : テーブル一覧&定義情報取得
手元にOracleがなく、実際にクエリーを投げて試すこともできず困っています。以下について教えて下さい。 1.Oracleにて、自分で作ったテーブルの名前の一覧を取得するクエリーを教えて下さい。 2.各テーブルにおいて、定義情報(カラム名、カラムサイズetc)を取得するクエリーを教えて下さい。 よろしくお願いします。
- ベストアンサー
- Oracle
- WINDOWSNTでディスクサイズを取得
ディスクサイズをチェックするシステムを作成しているのですが、 WINDOWSXPでは、正常に動作したのですが、 WINDOWSNTでは、うまく動作しません、どなたか、 ディスクサイズを取得する方法を教えてください。 また、WINDOWSNTの環境では無理なのでしょうか? よろしくお願いします。
- ベストアンサー
- Visual Basic
- Excel VBA で Oracle CLOB型カラムの文字列を取得する方法
Excel VBA を使用して、Oracleに格納されている文字列を取得しようとしています。 Number型やVarchar2型のカラムからは問題なく取得できるようになったのですが、CLOB型で文字列を格納しているカラムからの取得でつまずいています。 自分の書いた方法だと、1600バイト以上の文字列が格納されているとエラー文字が返ってきてしまいます。 これ以上の文字数を取得する方法について教えてもらえないでしょうか? '---// コード抜粋 ココから //--- 'ORAセッション生成 Set OraSession = CreateObject("OracleInProcServer.XOraSession") 'ORADB生成 Set OraDatabase = OraSession.OpenDatabase(<<dbname>>, <<id>> & "/" & <<passwd>>, 0) Dim SQL As String '一覧取得用SQL Dim RS As Object 'レコードセット SQL = " SELECT <<<clob_col_name>> FROM <<table_name>> " Set RS = OraDatabase.DbCreateDynaset(SQL, 0&) Range("A1").Value = RS.fields("<<clob_col_name>>").GetChunk(0, 3263) RS.Close '---// コード抜粋 ココまで //--- 環境は、Excel 2003、Oracle 9iです。 ひとつよろしくお願いいたします。
- ベストアンサー
- Visual Basic
お礼
chukenkenkouさん、こんばんは。二度も助けて頂いて恐縮です。 ちょっとバタバタとしており、お返事が遅くなったこと、また、せっかく ご回答を戴いたのに、未だ自分自身で確認ができておりませんことを お詫び致しますm(_ _)m 近日中に自分自身の手で確認してみようと思います。 いつも丁寧なご回答を戴き、本当にありがとうございます。