是否可以构造一个查询,该查询将基于列显示行的静态值?
例如。
在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] 删除。
我来说两句