2012-10-28 77 views
3

如何從表中選擇數據並將數據類型與值包含在一起? 例如,我有FNAME,姓氏,電話等 表名爲EMPLOYEE如果我做的:SQL Select包含數據類型和數據值

SELECT * FROM EMPLOYEE 

我得到的所有列。如果我這樣做:

SELECT COLUMN_NAME, DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'EMPLOYEE' 
ORDER BY ORDINAL_POSITION 

我得到所有的列名及其數據類型。

我需要結合這兩個,所以我有值與數據類型一起顯示。

我是新來的SQL,但我在網上搜索了一些,並嘗試各種JOIN和UNION語句,但我可能只是輸入他們錯了。

+0

將這兩個查詢的結果組合在while循環中會更容易。你不必*用SQL完成你所需要的一切。 –

+2

這是一個奇怪的要求。你爲什麼需要兩個? –

回答

2

您可以SELECT EMPLOYEE.COL1, INFO.DATA_TYPE FROM EMPLOYEE, INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME='EMPLOYEE' AND COLUMN_NAME='COL1' 但是要選擇更多的字段,您必須再次使用不同的別名添加另一個INFORMATION_SCHEMA.COLUMNS實例。

但是,你不應該這樣做,原因很多。

從技術上說:CROSS JOIN(FROM列出的表格只是用逗號)在數據庫服務器上非常緊張。 FROM T1, T2將T2的所有行與T2的所有行配對並檢查結果行。如果T1有n行,T2有m,那麼結果有n * m行。

邏輯1:您不應該需要返回此信息。當你輸入一個查詢(一個SELECT)時,返回的模式是已知的;該查詢確定結果列的數據類型。 邏輯上2:由於每列在列中都有相同的數據類型,因此不需要在每一行中都返回類型信息。例如。擁有1000名員工的例子返回的數據會不必要地對每一行,年齡字段是INTEGER轉讓,名稱爲VARCHAR等等...

假如你不小心就不會知道結果的模式(例如,由於生成的查詢等),那麼上面的解決方案不會幫助你。

+0

Lewyx,謝謝你讓我更接近我需要的東西。 這是用於創建數據網格視圖的類項目。我有一個文本框,用戶可以在其中輸入SQL語句並將結果顯示在網格中。現在我需要的是採取相同的SQL語句並選擇相同的列並顯示數據類型。我試圖避免必須解析框中的所有文本。 理想情況下,我想只顯示除了顯示結果的視圖之外所選的列名及其數據類型。如果一切都失敗了,我願意顯示每種數據類型。 – Kenny

+0

我明白了。請注意,在實際應用程序中,爲了安全起見,不能讓用戶直接與SQL語句交互。我認爲這是爲了一個課堂項目的目的,所以沒問題。 - 您的應用程序使用的SQL連接器最有可能獲得對列的數據類型的完整描述,根據您使用的語言/界面,您可能能夠提取該信息。讀取數據類型仍然不是SQL所要做的。 ;)如果您指定了用於數據庫訪問的組件,我們可能會進一步提示您。 –