如何从表中选择数据并将数据类型包含在值中?
例如,我有一个名为 EMPLOYEE 的表,其中包含 fname、lastname、phone 等。
如果我做:
SELECT * FROM EMPLOYEE
我得到了所有的列。如果我做:
SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'EMPLOYEE'
ORDER BY ORDINAL_POSITION
我获取了所有列名称及其数据类型。
我需要将这两者结合起来,以便将值与数据类型一起显示。
我是 SQL 新手,但我在网上搜索了一些并尝试了各种 JOIN 和 UNION 语句,但我可能只是输入了错误。
你可以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
将 T1 的所有行与 T2 的所有行配对并检查结果行。如果 T1 有 n 行,T2 有 m 行,则结果有 n*m 行。
逻辑上 1:您不需要返回此信息。当您输入查询(SELECT)时,返回的模式是已知的;查询确定结果列的数据类型。
逻辑2:由于每行的列中都有相同的数据类型,因此不需要每行都返回类型信息。例如。您的示例返回 1000 名员工的数据将不必要地传输每行AGE 字段是 INTEGER,NAME 是 VARCHAR 等等......
如果您不知何故不知道结果的模式(例如,由于生成的查询等),那么上述解决方案将无法帮助您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)