【发布时间】:2019-09-25 07:16:44
【问题描述】:
我很好奇为什么不使用TO_CHAR 就可以将整数连接到字符串,如下例所示:
declare
type test_table is table of varchar2(20);
test_session test_table;
begin
with
sessions
as
(select 1 session_num from dual
union
select 2 session_num from dual),
session_concat
as
(select 'Session: ' || session_num
from dual, sessions)
select *
bulk collect into test_session
from session_concat;
end;
/
连接也适用于CONCAT 关键字而不是|| 运算符,此外,当声明和连接整数变量时(而不是选择FROM DUAL)。
【问题讨论】:
-
我相信这是一种“隐式”转换,Oracle 和 MSSQL 会自动将原始类型转换为目标数据类型。小心这些,因为行为并不总是可预测的,尤其是在 where 子句中。谷歌搜索隐式转换应该可以帮助您理解这一点。
-
谢谢。我找到了 Oracle 隐式转换的文档。感谢您的提示——为了安全起见,我总是使用
TO_CHAR。
标签: plsql concatenation sqldatatypes