Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Oracle中的特定位置添加分隔符_Sql_Regex_String_Oracle - Fatal编程技术网

Sql 如何在Oracle中的特定位置添加分隔符

Sql 如何在Oracle中的特定位置添加分隔符,sql,regex,string,oracle,Sql,Regex,String,Oracle,嗨,我有一根这样的绳子 ABCDEFGH I want the output to be ABCDEF.GH 如果是像1234567这样的数字,那么我希望输出是12345.67 基本上,我希望delimeter(.)位于最后2个字符之前。您可以使用正则表达式: with v_data(val) as ( select '123456' from dual union all select 'abcdef' from dual union all select '678' from

嗨,我有一根这样的绳子

ABCDEFGH I want the output to be ABCDEF.GH
如果是像1234567这样的数字,那么我希望输出是12345.67


基本上,我希望delimeter(.)位于最后2个字符之前。

您可以使用正则表达式:

with v_data(val) as (
  select '123456' from dual union all
  select 'abcdef' from dual union all
  select '678' from dual
)
select 
  val, 
  regexp_replace(val, '(\d+)(\d{2})', '\1.\2') 
from v_data
这和

  • 一个或多个数字
    (\d+)
    (在组1中捕获)
  • 后面紧跟着两个数字
    (\d{2})
    (在第2组中捕获它们)

并将其替换为组#1的内容,然后是组#2:
\1的内容。\2

?INSERT()在指定位置插入一个子字符串,直到@MarcB指出的指定字符数,字符串函数是您的朋友。您可能需要将
INSTR()
LENGTH()
LEFT()
RIGHT()
、和
CONCAT()
或@Kabulan0lak所说的组合。哈很好的函数…@MarcB链接指向MySQL文档,而如果我没有弄错的话,OP想要一个针对Oracle的解决方案。?我还想添加分隔符。@user2647888请相应地更新您的问题。样本输入和预期输出将是理想的。