Oracle SQL字符串无效数字错误

Oracle SQL字符串无效数字错误,sql,oracle,Sql,Oracle,我有一个这样的疑问 SELECT 1,2,3 FROM (SELECT CASE WHEN something THEN TO_CHAR(1)... END,2,3 FROM tables WHERE condtions) WHERE 1 NOT LIKE 'String' 所有列都是varchar2,我在这个查询中得到一个无效的数字错误,指向内部case语句。内部查询单独运行良好。。如果删除外部WHERE条件,整个查询运行良好 我知道这与SQL优化器有关,但我在

我有一个这样的疑问

SELECT 1,2,3 
FROM (SELECT CASE WHEN something THEN TO_CHAR(1)... END,2,3 
      FROM tables WHERE condtions) 
      WHERE 1 NOT LIKE 'String'
所有列都是varchar2,我在这个查询中得到一个无效的数字错误,指向内部case语句。内部查询单独运行良好。。如果删除外部WHERE条件,整个查询运行良好

我知道这与SQL优化器有关,但我在这里做错了什么,我该如何解决这个问题?用于字符串或外部select语句的TOU CHAR无效

更新以更好地理解

SELECT COL1, COL2, COL3 FROM (
SELECT CASE WHEN LOGIC THEN TO_CHAR(1) ELSE TO_CHAR(0) END AS COL1, 
COUNT(SOME_COL) AS  COL2 , COUNT(SOME_COL2) AS COL3 FROM TABLES WHERE CONDTIONS
) WHERE COL1 NOT LIKE ‘0’

我被告知Oracle SQL优化器正在干扰并导致上述错误,并且必须以不同的方式编写查询

通过在1周围加上反勾号来指示1是一个列名

SELECT 1,2,3 FROM (SELECT CASE WHEN something THEN TO_CHAR(1)... END,2,3 
FROM tables
WHERE condtions) WHERE `1` NOT LIKE 'String'

您需要使用以字母开头的正确列名-1,2,3将不起作用,除非引用:

create table tab1 as 
select 1 as pk from dual
union all
select 2 as pk from dual
union all
select 3 as pk from dual;

SELECT col1,col2,col3 
FROM (SELECT (CASE WHEN 1=2 THEN TO_CHAR(1) else to_char(2) END) as col1 ,
      2 as col2,
      3 as col3
      FROM tab1 WHERE pk > 1) 
      WHERE col1 NOT LIKE '%1%'

我有点被1,2,3搞糊涂了-你真的想让查询返回这些整数,还是用它们来表示列名?很抱歉,查询有点不一样,请从选择大小写中选择1,2,3,然后选择“字符串”。。。从表中的条件结束为1,2,3,其中1不喜欢“字符串”。。。倒计时或单引号1没有帮助