Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
在Oracle Sql查询中获取格式化字符串_Sql_Database_Oracle_String Formatting - Fatal编程技术网

在Oracle Sql查询中获取格式化字符串

在Oracle Sql查询中获取格式化字符串,sql,database,oracle,string-formatting,Sql,Database,Oracle,String Formatting,我的问题是这样的 Select date_value from Tab1; 2008-09 2009-10 2007-09 输出如下所示(date_值为Varchar2列) 我正在尝试对列date_值进行一些格式化,以便输出如下所示 Select date_value from Tab1; 2008-09 2009-10 2007-09 作为上述查询的一部分,是否有一种方法可以使用一些内置的拆分/联接oracle函数来执行此操作。我在探索Instr和Substr,但我不确定如

我的问题是这样的

Select date_value from Tab1;
 2008-09
 2009-10
 2007-09
输出如下所示(date_值为Varchar2列)

我正在尝试对列date_值进行一些格式化,以便输出如下所示

Select date_value from Tab1;
 2008-09
 2009-10
 2007-09
作为上述查询的一部分,是否有一种方法可以使用一些内置的拆分/联接oracle函数来执行此操作。我在探索Instr和Substr,但我不确定如何在该查询中执行这个jsut

SELECT SUBSTR(date_value,1,5) || SUBSTR(date_value,8,2) FROM tab1

这将在未来8000年内起作用

如果在10g数据库上执行此操作,则可以使用

当然,在这里适用,尽管它确实有一个明显的优势:Y10K合规性:)


@cularis有答案,但请记住,这不是存储数据的正常方式。如果你有两列——例如:开始年和结束年,那么你就可以执行日期函数等。当然,你仍然可以随时输出“yyy-YY”格式。是的,我明白你的意思。因为我在一些现有的数据库上运行查询,所以我真的没有太多的更改选项。
SQL> select dcol
  2         , regexp_replace(dcol
  3                          , '([[:digit:]]+)\-([[:digit:]]+)([[:digit:]]{2})'
  4                          , '\1-\3') as regexp_replace
  5  from t79
  6  /

DCOL                           REGEXP_REPLACE
------------------------------ ------------------------------
2008-2009                      2008-09
2009-2010                      2009-10
2007-2009                      2007-09
10199-10200                    10199-00
887-888                        887-88

SQL>