PL/SQL CONCAT 函数

PL/SQL CONCAT Function

目标:拥有一个链接到客户账单的 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) 没有选择第二个连接并且 PL/SQL 开发人员生成了一个标题为 "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)

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

尝试以下查询:-

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

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

您的客户端工具正在考虑 & 作为替换运算符。

你可以逃离它。

或者,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>