一尘不染

SQL Select包括数据类型和数据值

sql

如何从表中选择数据并将数据类型包含在值中?例如,我有一个名为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语句,但是我可能只是在输入错误的信息。


阅读 359

收藏
2021-05-30

共1个答案

一尘不染

您可以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等的
每一行 上传输…

如果您以某种方式不知道结果的模式(例如,由于生成查询等),那么上述解决方案将无济于事。

2021-05-30