SELECT STUFF('SQL Tutorial', 1, 3, 'HTML');
找不到关键字错误
错误:ORA-00923
答案 0 :(得分:0)
一种选择是使用两个$
调用。我不会说MS SQL Server,所以我搜索了eval
;有一个例子说
substr
返回
stuff
结果为。
因此:
stuff('GeeksForGeeks', 5, 3, '1234')
在您的情况下,只有一个Geek1234rGeeks
:
SQL> with test (col) as
2 (select 'GeeksForGeeks' from dual)
3 -- 1234567890123
4 -- xxx
5 -- Geek1234rGeeks 5, 3, 1234
6 select substr(col, 1, 5) || '1234' ||
7 substr(col, 8) result
8 From test;
RESULT
---------------
Geeks1234rGeeks
SQL>
基本上,它依赖 ...
或者,如果您编写自己的函数,则可能看起来像这样:
substr
答案 1 :(得分:0)
使用this tutorial中的STUFF
函数的定义
我已经在Oracle中创建了如下相同的函数:
SQL> CREATE OR REPLACE FUNCTION STUFF ( 2 INPUT_STRING VARCHAR2, 3 START_POSITION NUMBER, 4 LENGTH_ NUMBER, 5 REPLACE_WITH_SUBSTRING VARCHAR 6 ) RETURN VARCHAR2 AS 7 BEGIN 8 IF START_POSITION > LENGTH(INPUT_STRING) OR START_POSITION <= 0 OR LENGTH_ < 0 THEN 9 RETURN NULL; 10 END IF; 11 12 IF LENGTH_ > LENGTH(INPUT_STRING) THEN 13 RETURN REPLACE_WITH_SUBSTRING; 14 END IF; 15 RETURN SUBSTR(INPUT_STRING, 1, START_POSITION - 1) 16 || REPLACE_WITH_SUBSTRING 17 || SUBSTR(INPUT_STRING, LENGTH_ + START_POSITION); 18 19 END; 20 / Function created.
上述教程链接中的一些示例在oracle中也使用此功能提供了相同的输出。
SQL> SELECT STUFF('SQL Tutorial', 1, 3, 'SQL Server') RESULT FROM DUAL; RESULT -------------------------------------------------------------------------------- SQL Server Tutorial SQL> SELECT STUFF('1230', 3, 0, ':') AS FORMATTED_TIME FROM DUAL; FORMATTED_TIME -------------------------------------------------------------------------------- 12:30 SQL> SELECT STUFF(STUFF('03102019', 3, 0, '/'), 6, 0, '/') FORMATTED_DATE FROM DUAL; FORMATTED_DATE -------------------------------------------------------------------------------- 03/10/2019 SQL>
最后,尝试使用问题中询问的参数:
SQL> SELECT STUFF('SQL Tutorial', 1, 3, 'HTML') AS YOUR_RESULT FROM DUAL; YOUR_RESULT -------------------------------------------------------------------------------- HTML Tutorial SQL>
干杯!