我有一个在 Visual Studio 的查询工具中执行的查询,我收到以下错误。
ORA-00972: 标识符太长。
现在我相信我知道 oracle 有 30 字节的限制,但这是我要执行的查询。
select
"cef_tsroma.tsrido" as "truck",
"cef_tsroma.dosvlg" as "rideNumber",
"cef_v_cw_shipment.shipmentNumber" as "shipmentNumber"
from
"cef_tsroma" left outer join "cef_v_cw_shipment" on "rideNumber" = "shipmentNumber"
where
"truck" = '104490'
不幸的是,我将无法更改数据库结构本身,因为它由另一家对数据库规范化一无所知的公司管理,或者处于他们根本不能或不应该的情况。我不知道。请注意“cef_v_cw_shipment”是一个视图。
Truck = '104490' 只是一个用于测试目的的样本整数。我尝试了各种解决方案,但正确的方法(或寻找正确的方法)似乎让我望而却步。
真诚的,我。
PS对不起,如果这是一个愚蠢的问题。
编辑:
select
"cef_tsroma"."tsrido" as "truck",
"cef_tsroma"."dosvlg" as "rideNumber",
"cef_v_cw_shipment"."shipmentNumber" as "shipmentNumber"
from
"cef_tsroma" left outer join "cef_v_cw_shipment" on "rideNumber" = "shipmentNumber"
where
"truck" = '104490'
“rideNumber”现在是一个无效的标识符,我很快就会回到这个。我想我以错误的方式别名,但我不确定。Goign 找出答案。
编辑2:
select
ct.tsrido as "truck",
ct.dosvlg as "rideNumber",
cs.shipmentNumber as "shipmentNumber"
from "cef_tsroma" ct
left outer join "cef_v_cw_shipment" cs
on "rideNumber" = "shipmentNumber"
where "truck" = '104490'
我现在使用这种语法,因为它比以前的语法更简洁、更容易理解。但是我仍然遇到 ORA-00904:“rideNumber”:无效标识符(这可能在连接行中也算作 shippingNumber。试图弄清楚这一点,谷歌返回命名提示:没有成功。仍在搜索。
编辑3:
select
ct.tsrido as truck,
ct.dosvlg as rideNumber,
cs.shipmentNumber as shipment
from
"cef_tsroma" ct
left outer join
"cef_v_cw_shipment" cs
on
ct.dosvlg = cs.shipmentNumber
where
truck = '104490'
现在遵循建议,这是当前的语法。它当前返回错误消息:
错误 ORA-00904: "CS"."SHIPMENTNUMBER": 标识符无效
对不起,我没有设计这个数据库>):
编辑4/解决方案?
奇怪的是,这似乎有效。
select ct."tsrido", ct."dosvlg", cs."shipmentNumber" as shipmentnumber
from "cef_tsroma" ct
left outer join "cef_v_cw_shipment" cs
on ct."dosvlg" = cs."shipmentNumber"
where ct."tsrido" = '104956';