【问题标题】:Oracle SQL: Using CHR() function with || concatenate and joinOracle SQL:将 CHR() 函数与 || 结合使用连接和加入
【发布时间】:2017-03-20 20:02:45
【问题描述】:

下面的查询返回错误

SELECT 'mailto:'|| fscp.parameter_value || '?subject=' || wfn.subject nid_subject || chr(38)       
FROM apps.wf_notifications wfn, apps.fnd_svc_comp_param_vals_v fscp
WHERE fscp.component_id = :component_id 
AND component_parameter_id = :param
AND wfn.item_key = :itemkey; 

错误

ORA-00923: 在预期的地方找不到 FROM 关键字 00923.00000 - “在预期的地方找不到 FROM 关键字”

当我删除 '|| chr(38)' 在 select 语句的末尾,查询运行良好。
与连接表有关的东西?因为下面的查询也可以正常工作:

select 'Text: '||chr(39)||wfn.notification_id||chr(39) from wf_notifications wfn;

【问题讨论】:

标签: sql oracle


【解决方案1】:

你有这个在select:

|| wfn.subject nid_subject || 

也许你打算:

SELECT 'mailto:'|| fscp.parameter_value || '?subject=' || wfn.subject || nid_subject || chr(38)   
----------------------------------------------------------------------^ 

亚历克斯是对的。问题的关键是它可以在没有chr(38) 的情况下工作。所以,试试这个:

SELECT ('mailto:'|| fscp.parameter_value || '?subject=' || wfn.subject || chr(38) ) as nid_subject 

注意使用括号和as 来明确定义列别名。

【讨论】:

  • 我怀疑 nid_subject 应该是整个表达式的别名,而不是另一列 - 部分原因是它没有表(别名)前缀。但很难说...
  • @AlexPoole 。 . .你说的对。问题中甚至还有提示。
猜你喜欢
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 1970-01-01
相关资源
最近更新 更多