无法在不同类型的所有列中搜索

Cannot search in all columns of differing types

这个看起来像一个老问题,但实际上不是。我无法在 SO 或其他地方找到答案。

我有这个 table:

n (number) | s (varchar2)
-------------------------
200        | some string
201        | some other string

我可以 cast 数字 n 到一个字符串并且 select 它没有像这样的问题:

SELECT n FROM t;
SELECT TO_CHAR(n) FROM t;

但我需要在所有列中搜索字符串值。我尝试过的(它通常有效,这意味着数据库是 11g)是 UNPIVOT:

SELECT * FROM t UNPIVOT (anywhere FOR col IN (...));

但是,NOT 的作用是混合数据类型(数字和基于字符的类型,例如 varchar2)。我得到的是:

ORA-01790: expression must have same datatype as corresponding expression

没关系,我明白这一点,解决方案很明显。将数字投射到字符。但这也不管用。即时解决方案:

SELECT * FROM t UNPIVOT (anywhere FOR col IN (s, TO_CHAR(n)));
                                                        ^

我收到这个意外错误:

ORA-00917: missing comma

这里的问题是 TO_CHAR 根本没有被解释为函数,它被认为是像 sn.

这样的列名

那么,如何将 UNPIVOT 与混合数据类型一起使用 or 如何将所有列转换为 varchar2 or 我还能怎样解决这个问题?

尝试使用:

SELECT * 
  FROM (SELECT to_char(n) as n, s FROM t) 
UNPIVOT (anywhere FOR col IN (...));