【发布时间】:2021-12-16 11:50:44
【问题描述】:
我正在尝试从 Oracle 中的 Transact SQL 复制 STUFF() 函数的行为。我假设CONCAT 和SUBSTR 函数都会参与其中,但如果不编写太多代码,我想不出一个聪明的方法。
有谁知道实现这一目标的好方法吗?
【问题讨论】:
标签: sql oracle tsql plsql stuff
我正在尝试从 Oracle 中的 Transact SQL 复制 STUFF() 函数的行为。我假设CONCAT 和SUBSTR 函数都会参与其中,但如果不编写太多代码,我想不出一个聪明的方法。
有谁知道实现这一目标的好方法吗?
【问题讨论】:
标签: sql oracle tsql plsql stuff
正如你所说,由于没有这样的内置函数 - 你必须自己编写一个,使用连接和substr 函数。像这样的:
SQL> create or replace function stuff
2 (par_str in varchar2,
3 par_start in number,
4 par_length in number,
5 par_replace_with in varchar2
6 )
7 return varchar2
8 is
9 begin
10 return substr(par_str, 1, par_start - 1) ||
11 par_replace_with ||
12 substr(par_str, par_start + par_length);
13 end stuff;
14 /
Function created.
SQL> select stuff('abcdef', 2, 3, 'ijklmn') result from dual;
RESULT
--------------------------------------------------------------------------------
aijklmnef
SQL>
(使用STUFF T-SQL文档模拟)
【讨论】: