SQL IF /条件查询

用户名

是否可以构造一个查询,该查询将基于列显示行的静态值?

例如。

在INFORMIX中,syscolumns类型以整数形式返回。我希望它以字符串而不是整数的形式打印表类型。

例如,当我运行一个简单的查询以获取系统表时

SELECT * FROM SYSCOLUMNS WHERE TABID < 100

我懂了

    colname   tabid  colno  coltype collength
------------------------------------------------
    tabname     1      1      13       128

WHERE coltype = 13对应于VARCHAR

所以我原来的查询会给我

COLNAME    COLTYPE
col1       0
col2       1
...

但我希望将其作为

COLNAME     COLTYPE
col1       CHAR
col2       SMALLINT
... 

在单个查询中有可能做这种事情吗?

汤姆
SELECT COLUMN, 
       CASE
         WHEN COLTYPE = 0 THEN 'CHAR'
         WHEN COLTYPE = 1 THEN 'SMALLINT'
         ELSE CAST(COLTYPE AS VARCHAR)
       END as COLTYPE
FROM MyTable

因此,例如,使用此表:

  COLUMN     |    COLTYPE
-------------+--------------
   col1      |       0
   col2      |       1
   col3      |       2

结果将是:

  COLUMN     |    COLTYPE
-------------+--------------
   col1      |     CHAR
   col2      |   SMALLINT
   col3      |      2

但是,如果coltype映射到id另一个表中或类似表,则连接到该表会更有意义,例如:

SELECT MyTable.COLUMN, SecondTable.COLUMNNAME
FROM MyTable
JOIN SecondTable ON MyTable.COLTYPE = SecondTable.COLTYPE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章