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>
目标:拥有一个链接到客户账单的 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>