字段名称、字段类型和字段值的SQL查询



假设我有一个类似下面的表

pp_refno   pp_rectype   _pp_account  pp_empid   pp_dept
---------------------------------------------------------
90221      contractor    061509864   C00001121  1111000139

是否有可以编写的查询,以便以这种格式返回数据?

field_name          field_type     field_value
---------------------------------------------------------
pp_refno            int             90221
pp_rectype          char            contractor
pp_account          char            061509864
pp_empid            char            C00001121 
pp_dept             char            1111000139

是的,这可以通过使用您正在使用的数据库的信息模式来实现。然而,您必须添加1列才能将其用于多行:

field_name          field_type     field_value        pp_refno
--------------------------------------------------------------
pp_refno            int             90221             90221
pp_rectype          char            contractor        90221
pp_account          char            061509864         90221
pp_empid            char            C00001121         90221
pp_dept             char            1111000139        90221

通过这种方式,您可以识别多个记录。

此外,您还必须为每个表编写或生成一个特定的查询,由于数据的工作方式,查询可能很大,速度也很慢。

如果只检索单行,还可以使用存储过程以给定的方式列出数据。

您可以使用SQL查询的UNPIVOT函数来实现这种行为。下面的链接通过类似的例子为您提供了更多的想法。

堆栈溢出链接示例

要读取列类型,您需要连接sys表并获得列类型

SELECT DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
 TABLE_NAME = 'yourTableName' AND 
 COLUMN_NAME = 'yourColumnName'

一旦您有了unpivot表别名,您就应该能够将其与SCHEMA.columns表连接起来,并获得逻辑实现的

相关内容

  • 没有找到相关文章

最新更新