如何从表中选择数据并将数据类型包含在值中?
例如,我有一个名为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语句,但我可能只是输错了.
最佳答案 您可以选择EMPLOYEE.COL1,INFO.DATA_TYPE FROM EMPLOYEE,INFORMATION_SCHEMA.COLUMNS INFO WHERE INFO.TABLE_NAME =’EMPLOYEE’和COLUMN_NAME =’COL1′
但是要选择更多字段,您必须使用不同的别名再次添加另一个INFORMATION_SCHEMA.COLUMNS实例.
但是你不应该出于多种原因这样做.
从技术上讲:CROSS JOIN(FROM中的表格只用逗号列出)对数据库服务器造成很大压力.从T1开始,T2将T1的所有行与T2的所有行配对,并检查结果行.如果T1有n行而T2有m,那么结果有n * m行.
逻辑1:您不应该返回此信息.输入查询(SELECT)时,返回的模式已知;查询确定结果列的数据类型.
逻辑2:由于每行中的每个行都具有相同的数据类型,因此不需要在每一行中返回类型信息.例如.您的示例返回1000名员工的数据将不必要地转移AGE字段为INTEGER,NAME为VARCHAR等等的每一行…
如果您以某种方式不知道结果的模式(例如,由于生成的查询等),那么上述解决方案将无法帮助您.