PL / SQL CONCAT函数

时间:2015-05-15 11:04:33

标签: excel oracle plsql plsqldeveloper

目标:拥有一个链接到客户账单的Excel文档。

所需的PL / SQL输出:

account_id | bill_id | '=HYPERLINK(".\"&'||bill_id||'&"-00.PDF")'
-----------+---------+----------
12345      | 10      | =HYPERLINK(".\"&10&"-00.PDF")
23456      | 11      | =HYPERLINK(".\"&11&"-00.PDF")
34567      | 12      | =HYPERLINK(".\"&12&"-00.PDF")

PL / SQL查询(documentation here)未获取第二个concat,PL / SQL Developer生成一个标题为“Variables”的弹出窗口,要求输入值。
Select account_id, bill_id, '=HYPERLINK(".\"&' || bill_id || '&"-00.PDF")' from customer_table
还测试了
Select account_id, bill_id, CONCAT( CONCAT('=HYPERLINK(".\"&',bill_id),'&"-00.PDF")') from customer_table

当前输出:

account_id | bill_id | '=HYPERLINK(".\"&'||bill_id||'&"-00.PDF")'
-----------+---------+----------
12345      | 10      | =HYPERLINK(".\"&10)
23456      | 11      | =HYPERLINK(".\"&11)
34567      | 12      | =HYPERLINK(".\"&12)

我在搜索中没有看到这个特殊问题,但如果找到解决方案,我会更新。有人会看到这个问题或能够提出一个解决方法吗?

2 个答案:

答案 0 :(得分:1)

&,即&ampersand在 SQL*Plus 中被视为替代运算符。好吧,尽管如此,大多数基于GUI的客户端工具都能够执行SQL * Plus命令。

您的客户端工具正在考虑将&作为替代运营商。

您可以 ESCAPE

或者,set define off在会话级别。

例如,

SQL> SELECT 'HYPERLINK(".\"&10&"-00.PDF")' FROM dual;
Enter value for 10:
old   1: SELECT 'HYPERLINK(".\"&10&"-00.PDF")' FROM dual
new   1: SELECT 'HYPERLINK(".\"&"-00.PDF")' FROM dual

'HYPERLINK(".\"&"-00.PDF"
-------------------------
HYPERLINK(".\"&"-00.PDF")

SQL> SET DEFINE OFF
SQL> SELECT 'HYPERLINK(".\"&10&"-00.PDF")' FROM dual;

'HYPERLINK(".\"&10&"-00.PDF"
----------------------------
HYPERLINK(".\"&10&"-00.PDF")

SQL>

答案 1 :(得分:0)

尝试以下查询: -

SELECT account_id, bill_id, CONCAT('=HYPERLINK(".\"&',bill_id,'&"-00.PDF")') 
FROM customer_table;