Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql查询未执行-显示无效标识符错误_Sql_Oracle - Fatal编程技术网

Sql查询未执行-显示无效标识符错误

Sql查询未执行-显示无效标识符错误,sql,oracle,Sql,Oracle,我正在尝试执行以下sql语句,但它始终显示错误为“NEW\T”。“NEW\u ORDER\u ID”:无效标识符 如何获取此“new\u order\u id”,因为我需要进一步加入它。从派生列名中删除双引号,或者在select子句中使用双引号 with ticket_orders AS( select REGEXP_SUBSTR(st.ORDER_ID, '\d{3}-\d{7}-\d{7}') "new_order_id" from (select REGEXP_SUBSTR

我正在尝试执行以下sql语句,但它始终显示错误为
“NEW\T”。“NEW\u ORDER\u ID”:无效标识符


如何获取此“
new\u order\u id
”,因为我需要进一步加入它。

从派生列名中删除双引号,或者在select子句中使用双引号

with ticket_orders AS(
    select REGEXP_SUBSTR(st.ORDER_ID, '\d{3}-\d{7}-\d{7}') "new_order_id"

from

(select 

REGEXP_SUBSTR(details, 'Order\s+ID(\s*\(s\))?:\s*\d{3}-\d{7}-\d{7}') AS "ORDER_ID" 
from o_remedy ort
) st)


select new_t.new_order_id from ticket_orders new_t;
默认情况下,Oracle会将每个对象名称转换为大写,除非您在双引号中指定它。因此,
“新订单id”
将不会转换为大写,但在选择
新订单时,新订单id
将转换为不存在的大写

若要解决此问题,请从派生列名中删除双引号,或者在select子句中也使用双引号

with ticket_orders AS(
    select REGEXP_SUBSTR(st.ORDER_ID, '\d{3}-\d{7}-\d{7}') "new_order_id"

from

(select 

REGEXP_SUBSTR(details, 'Order\s+ID(\s*\(s\))?:\s*\d{3}-\d{7}-\d{7}') AS "ORDER_ID" 
from o_remedy ort
) st)


select new_t.new_order_id from ticket_orders new_t;
我在本地机器上复制了它

这是行不通的

select new_t."new_order_id" from ticket_orders new_t;
with tbl as 
(select empno "new_emp_no" from emp)
select t.new_emp_no From tbl t
并给予

ORA-00904:“T”。“新环境管理号”:无效标识符 90400000-%s:无效标识符 *原因:
*操作:第116行第10列出错

但这是可行的


您不是指“前面的SQL语句”吗?您正在选择
t.new\u order\u id
,但错误显示为
“new\u t”。“new\u order\u id”
NEW\u T
来自哪里?很抱歉,我打错了,它是NEW\u Tonly@toonice你说的“前面的SQL语句”是什么意思?你说的“后面的SQL语句”是关于一个在那句话之前的SQL语句。“在前”是正确的。
WITH ticket_orders AS
(
    SELECT 
        REGEXP_SUBSTR(st.ORDER_ID, '\d{3}-\d{7}-\d{7}') new_order_id
    FROM
    (
        SELECT 
        REGEXP_SUBSTR(details, 'Order\s+ID(\s*\(s\))?:\s*\d{3}-\d{7}-\d{7}') AS ORDER_ID 
        FROM o_remedy ort
    )  st
)
SELECT new_t.new_order_id FROM ticket_orders new_t;