4

テーブルからデータを選択し、値にデータ型を含めるにはどうすればよいですか?たとえば、fname、lastname、phoneなどのEMPLOYEEというテーブルがあります。

SELECT * FROM EMPLOYEE

すべての列を取得します。私が行った場合:

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

すべての列名とそのデータ型を取得します。

これら2つを組み合わせて、データ型とともに値を表示する必要があります。

私はSQLを初めて使用しますが、Webでいくつか検索し、さまざまなJOINおよびUNIONステートメントを試しましたが、間違って入力している可能性があります。

4

1 に答える 1

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, T2T1のすべての行をT2のすべての行とペアにして、結果の行を調べます。T1にn行があり、T2にmがある場合、結果にはn*m行が含まれます。

論理的に1:この情報を返す必要はありません。クエリ(SELECT)を入力すると、返されるスキーマがわかります。クエリは、結果の列がどのデータ型であるかを決定します。論理的に2:すべての行の列に同じデータ型があるため、すべての行で型情報を返す必要はありません。たとえば、1000人の従業員のデータを返す例では、AGEフィールドがINTEGER、NAMEがVARCHARなどのすべての行で不必要に転送されます...

どういうわけか結果のスキーマがわからない場合(たとえば、生成されたクエリなどのため)、上記のソリューションは役に立ちません。

于 2012-10-29T00:10:33.540 に答える