在 sql 中的字符串中添加一个点

Adding a dot in a string in sql

我需要在两串数字中加一个点。 (例如“88188741478”)。我需要在结尾前添加 8 个字符。 结果应类似于“881.88741478”。 我需要返回几列,但只需要在其中 2 列中添加点。

最终输出应该是这样的:

380600001036641|8.84243987|44.41515810|0

我在 .bat 文件中使用 sqlplus 到 运行 .sql 文件。

我的代码是:

whenever sqlerror exit 90
set echo on
set verify off
set feedback off
set heading off
set linesize 257
set termout off
set pages 0
set pagesize 0
set space 0
spool C\file.txt
Select
First
||'|'|| Second
||'|'|| Third
||'|'|| STUFF(Fourth, length(Fourth)-8, 0, '.') as "FOURTH"
||'|'|| STUFF(Fifth, length(Fifth)-8, 0, '.') as "FIFTH"
||'|'|| Sixth
FROM table
WHERE Sixth='0'
AND NotSelectedParameter IN ('001', '003');

我不断收到此错误:

#ORA-00923: FROM keyword not found where expected

我尝试更改别名、检查保留字、使用子字符串、子字符串、左 + 右而不是东西,但我不断收到不同的错误。在我没有收到错误的时候,程序被阻止打印最后一个命令的行号(如果“AND NotSelectedParameter IN('001','003');”在第 12 行它打印 12 并且它自己被阻止直到我在 cmd 中按 z)。

我能做什么?

编辑:未封闭的标识符是这个问题中的格式错误。标识符在原始代码中被关闭。

关闭标识符。

错误:

||'|'|| STUFF(Fifth, length(Fifth)-8, 0, '.') as "FIFTH

右:

||'|'|| STUFF(Fifth, length(Fifth)-8, 0, '.') as "FIFTH"

函数中间不能有(未终止的)别名。

删除两个“AS ...”。

一个确实存在的函数是 regexp_replace。

regexp_replace('88188741478','(.*)([[:digit:]]{8})$','.') 

给予

881.88741478