SQLServerで列名取得の方法とは?

このQ&Aのポイント
  • SQLServerでテーブルの列名を取得する方法について試してみましたが、空のデータしか表示されません。どこが間違っているのか教えてください。
  • SQLServerのManagement Studioを使用して、テーブルのカラム(列)名を取得したいです。しかし、実行しても空のデータしか表示されません。どこが間違っているのでしょうか。
  • SQLServerのテーブルのカラム(列)名を取得するためのクエリを試してみましたが、何も表示されません。どこが間違っているのか教えてください。
回答を見る
  • ベストアンサー

SQLServerで列名取得

Microsoft SQL Server2014 ManagementStudio を Windows7 で使用しています。 テーブルのカラム(列)名を取得したくて いろいろ調べてみましたが SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'TestTable' ORDER BY ORDINAL_POSITION とか、 select name from Sys.Columns where object_id = object_id('TestTable') を実行しても、空のデータしか表示されません。 何がまちがっているのか教えてください。

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

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.2

データベースコンテキストが他のデータベース(masterとか)のままになっているのかもしれません。  use データベース名  go でデータベースを切り替えてからselectしてみてください。 例:TestDatabaseデータベースの中にTestTableテーブルがある場合  use TestDatabse  go  select name  from Sys.Columns  where object_id = object_id('TestTable')

参考URL:
http://msdn.microsoft.com/ja-jp/library/ms188366.aspx
MetalDragon
質問者

お礼

ありがとうございました。 表示できるようになりました。

その他の回答 (1)

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

「TestTable」って存在するんですか??

関連するQ&A

  • SQLインジェクション時の最小値、最大値以外の取得

    ascii(substring((select min(TABLE_NAME) from information_schema.tables where TABLE_SCHEMA != 'mysql' AND TABLE_SCHEMA != 'information_schema'),2,1))>100; ↑MySQLの場合です。 前回ここで疑問に答えていただいて、このようにすることで、tablesというテーブルから、データベースinformation_schemaとmysql以外のデータベースにあるテーブルを取得できるというのはわかったのですが、上のような記述だとmin(TABLE_NAME)にあるとおり、TABLE_NAMEで並べたときの最小のものしか取得できないんです。。。 min(TABLE_NAME)のminをmaxに変えることで最大のものは取得できますが、その2つ以外のテーブル名を取得する記述(例えば2番目を取得するなど)はあるのでしょうか? データベースの種類はMySQLでなくても良いです。 連続の質問になるのですがよろしくお願いします。。。

  • TIMESTAMP型が含まれるテーブルの列名の取得

    Oracle 11gを使用しているSQL初心者です。 テーブルの列名を取得する方法についての質問です。 テーブルの列名を取得するときは以下のSQLで取れると思っています。 select column_name from user_tab_columns where table_name = 'テーブル名'; --実行結果-- COLUMN_NAME ------------------------------ NAME1 NAME2 しかし、テーブルにTIMESTAMP型が含まれていると 「レコードが選択されませんでした。」 と表示されます。 TIMESTAMP型が含まれるテーブルは上記のSQLでは取得できないのでしょうか。 TIMESTAMP型が含まれるテーブルの列名の取得方法をご存知の方がいらっしゃいましたら、 ご教示ください。よろしくお願い致します。

  • Oracle SQLの、where句内の条件文について教えてください。

    Oracle SQLの、where句内の条件文について教えてください。 下記SQLの(1)と(2)の記述文を教えてください。 (1)例:owner = sys,admin ownerがsysまたは、adminを抽出 (2)例:column_name = '*aaa*' column_nameに「aaa」が含まれているデータ SELECT owner, table_name,column_name FROM all_tab_columns WHERE (1)(Ownerを複数指定)   and (2)(column_nameに、●●が含まれるデータ)

  • まったく別のテーブルの結果MYSQL

    table_1 id name age table_2 id book title city day SELECT * FROM table_1 WHERE id=? SELECT book,title FROM table_2 WHERE city=? このようにまったく別のテーブル カラム数も違う WHEREの?も違う これを一つのSQL文にまとめたいのですが。 UNIONなどを使ってもうまくいきませんでした。 ご教授お願いいたします。

    • ベストアンサー
    • MySQL
  • inner joinとwhereでの結合の違いは?

    お世話になります。 たとえば、テーブルが複数(この場合2つ)ある場合。 (1) test(カラム:table_id,table_name) (2) tester(カラム:table_id,table_name) 以下のクエリは条件的に select a.table_id, a.table_name from test a inner join tester b on a.table_id = b.table_id ************* select a.table_id, a.table_name from test a , tester b where a.table_id = b.table_id 同じですよね? パフォーマンス的にもjoinすることのメリットが判りません。

  • SQLについてアドバイスください。

    USER_TAB_COLUMNSから入力したテーブル名で構造を抽出し SQL文を作成出来るものを作ろうとしています。 80%までうまく行くのですが、SELECT文でフィールドをカンマ付けで置いていく 所で最後のフィールドに来た時カンマが付加されてしまいます。 これを最後のフィールドに来た時カンマが付加されないでスペースで置くように したいのですが。。 set pagesize 0 set linesize 1000 set trimspool on set feedback off set verify off ACCEPT TABLE CHAR PROMPT 'TABLE NAME:' set termout off spool C:\TEST_csv.sql SELECT 'SELECT ' FROM DUAL; SELECT COLUMN_NAME || ',' FROM USER_TAB_COLUMNS WHERE TABLE_NAME = UPPER( '&TABLE' ) ORDER BY COLUMN_ID; SELECT 'FROM DUAL' FROM DUAL; SPOOL OFF

  • PHPの文字列型の数字の判別について

    mySQL+PHP初心者です。 $stringNumに格納した値をWhere条件として、 testTable テーブルに格納したレコードから、名前を取得したいのですが、 "0000123"と"123"が同じ結果となってしまいます。   $stringNum = "0000123"; $sql = "SELECT name FROM testTable WHERE (Id = " . $stringNum . " )";   →「鈴木太郎」が抽出 ***********************   $stringNum = "123"; $sql = "SELECT name FROM testTable WHERE (Id = " . $stringNum . " )";   →「鈴木太郎」が抽出 *********************** testTableテーブル   Id    name   0000123 鈴木太郎   0000124 佐々木学 文字列型として、"0000123"と、"123"は、別の値として区別したいのです。 上記のSELECT文だと、"0000123"と、"123"の場合で、 結果が同じ「鈴木太郎」が抽出されてしまいます。 型をしらべると、$stringNumの値は文字列型となっているので、 "0000123"と、"123"は別の値にはるはずですが、 なぜ同じになるのでしょうか? "0000123"と、"123"を別の値として判別させるにはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • カラム情報(主キー、データ型、桁数等)を取得するには

    テーブルに格納されているカラム情報(カラム名、主キー、データ型、データの桁数)を取得したいと考えています。 主キー情報とそれに付随するカラム情報は現在下記のSQL文で取得しています。 SELECT C.TABLE_NAME , COL.COLUMN_NAME, C.CONSTRAINT_TYPE, COL2.DATA_TYPE, COL2.DATA_LENGTH FROM USER_CONSTRAINTS C, USER_CONS_COLUMNS COL, USER_TAB_COLUMNS COL2 WHERE C.TABLE_NAME = COL.TABLE_NAME AND C.CONSTRAINT_NAME = COL.CONSTRAINT_NAME AND C.TABLE_NAME = COL2.TABLE_NAME AND COL.COLUMN_NAME = COL2.COLUMN_NAME AND C.CONSTRAINT_TYPE = 'P' AND UPPER(C.TABLE_NAME) = UPPER('テーブル名') ORDER BY C.TABLE_NAME, COL.POSITION ここで、主キー以外のカラムに対しても同様にカラム情報を取得したいのですが、どのように取得すればよろしいでしょうか? ※カラム名、主キー有無、データ型、桁数 でカラム情報を取得できれば最も良いのですが、 主キー情報を除いた全体のカラム情報を取得する事ができれば、こちらの情報でも助かります 宜しくお願い致します。

  • MySQLのテーブルのコラム名の取得方法

    MySQLのテーブルを一つのオブジェクトと考えるようなクラスを作ろうとしています。 このクラスの中で、テーブルの各コラム(またはフィールド名)を要素にした配列を作りたいのですが、やり方がわかりません。 自分がある程度調べてみたところでは、MySQLシェルの中では、次のように入力すると添付した画面のようにコラム名の一覧が表示がされるのですが これらのコラム名をPHPスクリプト内にある配列に格納出来ません。 mysql> SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="transaction"; まだ作成の途中ですが、自分のスクリプトは以下に掲載したようなものです // columnList initialize というブロックが該当部分です。ほかの部分はとりあえず働いてます。 どなたかお知恵を貸していただけないでしょうか。お願いいたします。 <?php class Table{ private $DBname; private $tableName; private $columnList=array(); private $dataArray=array(array()); private $totalRecords; //=================================================== public function __construct($database, $tablename) //=================================================== { $this->DBname=$database; $this->tableName=$tablename; $cxn=mysqli_connect("localhost","root","rsi2018","$database") or die("cannot connect to database"); // $columnList initialize $query="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\"$tablename\""; $result=mysqli_query($cxn, $query) or die("query failed :1"); $row=mysqli_fetch_array($result); foreach($row as $col){ $this->columnList[]=$col; } // $totalRecords initialize $query="select count(*) as count from $tablename"; $result=mysqli_query($cxn, $query) or die("query failed :3"); $row=mysqli_fetch_array($result); $this->totalRecords=$row["count"]; // $dataArray initialize for($i=0; $i < $this->totalRecords; $i++){ $query="select * from $tablename where id=($i+1)"; $result=mysqli_query($cxn, $query) or die("query failed :2"); $this->dataArray[$i]=mysqli_fetch_assoc($result); } }// end constructor //=================================================== public function showPart($id) //=================================================== { $data=$this->dataArray[$id - 1]; /* foreach($data as $key=>$value){ echo "$key = $value</br>"; } */ echo "ID: ".$data['id']."</br>"; echo "partNumber: ".$data['partNumber']."</br>"; echo "partName: ".$data['partName']."</br>"; echo "simpleName: ".$data['simpleName']."</br>"; echo "stock: ".$data['stock']."</br>"; echo "location: ".$data['location']."</br>"; }// end function //=================================================== public function getTotalRecords() //=================================================== { return $this->totalRecords; }// end function //=================================================== public function showColumnList() //=================================================== { foreach($this->columnList as $field){ echo "$field "; } echo "</br>"; }// end function }// end class ?>

    • ベストアンサー
    • PHP
  • データ内の「\」や「'」を抽出するには

    データ内に「\」や「'」が含まれているデータを抽出するには SELECT * FROM table WHERE column LIKE '%\%' SELECT * FROM table WHERE column LIKE '%'%' で良いのでしょうか?

    • ベストアンサー
    • MySQL

専門家に質問してみよう