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;
我试图执行以下sql语句,但它一直显示错误为"NEW_T"."NEW_ORDER_ID": invalid identifier
如何获得这个" new_order_id
"因为我需要进一步加入。
答案 0 :(得分:1)
从派生列名中删除双引号,或者也在select子句中使用双引号。
select new_t."new_order_id" from ticket_orders new_t;
默认情况下,Oracle将每个对象名称转换为大写,除非您用双引号指定它。因此"new_order_id"
不会转换为大写,但选择new_t.new_order_id
时将转换为大写,但不存在。
要解决此问题,请从派生列名称中删除双引号,或在select子句中使用双引号。
我在本地机器上复制了它。
这不起作用。
with tbl as
(select empno "new_emp_no" from emp)
select t.new_emp_no From tbl t
并给予
ORA-00904:“T”。“NEW_EMP_NO”:标识符无效 00904. 00000 - “%s:无效标识符” *原因:
*动作:行错误:116列:10
但这会奏效。
with tbl as
(select empno "new_emp_no" from emp)
select t."new_emp_no" From tbl t
答案 1 :(得分:1)
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;