2014-06-28 63 views
0

我想,我的形式在PHP中,包括columntype的結果。 有沒有辦法查詢幷包括列類型?Sql select包括columntype

select * from TableA 
+ 
SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'yourTableName' 
+0

可能重複[SQL語句來獲得列型(http://stackoverflow.com/questions/13405572/sql-statement-to-get-column-type) –

+0

我想如果可能的話結合起來。所以select * from TableA + SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='yourTableName' – Bas

+1

http://php.net/manual/en/pdostatement.getcolumnmeta.php –

回答

0

我發現這個。所以現在我可以組合陣列!的

$i = 0; 
    while ($column = $query->getColumnMeta($i++)) { 
     print_r($column); 
    } 
0

可能沒有辦法選擇數據和列類型,因爲列類型通常存儲在單獨的表中(這取決於數據庫)。例如,在MySQL:

查詢柱類型: SELECT COLUMN_NAME,DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '表A'

然後將需要解析2個查詢的結果並加入他們使用PHP(我不認爲有一個簡單的方法來使用SQL來做到這一點,因爲你將加入1xN結果與Nx1結果)。

關於列類型的存儲位置更多信息: http://dev.mysql.com/doc/refman/5.7/en/information-schema.html

0

這些都是本質上的不同的數據集,所以我敢打賭,你需要寫一個可能是相當混亂的存儲程序。

你不解釋爲什麼你需要它,但我懷疑你會沒有問題,結果集(而不是源表)的列類型。這將包括完全相同的信息和計算列的類型。

確切的機制取決於您的DBMS和數據庫庫。你不給有關任何線索,但您的示例代碼看起來像MySQL這樣的選項包括:

如果你要堅持你原來的規範,至少省去一些麻煩,只需運行兩個查詢。