简体   繁体   English

如何在Oracle表的varchar列中的第2个和第4个char之后插入“/”

[英]How to Insert '/' after 2nd and 4th char in varchar column of an Oracle table

I am new to Oracle and working in Oracle 10g. 我是Oracle的新手,在Oracle 10g中工作。 I have a table WW_WAGEMAST and it has a column of type varchar2(11) for saving PF_Join_date . 我有一个表WW_WAGEMAST ,它有一个类型为varchar2(11)的列,用于保存PF_Join_date It has date in both format ddmmyyyy and dd/mm/yyyy . 它的格式为ddmmyyyydd/mm/yyyy I want to convert all date in single format dd/mm/yyy. 我想以单格式转换所有日期dd / mm / yyy。 How can I do that ? 我怎样才能做到这一点 ?

For example - current situation: 例如 - 目前的情况:

PF_JOIN_DATE
------------
01/04/2018 
02042018 
03042018 
04/04/2018 
05042018

I need to change all to a single format like this: 我需要将所有内容更改为单个格式,如下所示:

PF_JOIN_DATE
---------------
01/04/2018 
02/04/2018 
03/04/2018 
04/04/2018 
05/04/2018

How can I do that? 我怎样才能做到这一点? Please help me. 请帮我。 Thanks in advance. 提前致谢。

You can write: 你可以写:

update WW_WAGEMAST
set PF_JOIN_DATE = substr(PF_JOIN_DATE, 1, 2) || '/' ||
                   substr(PF_JOIN_DATE, 3, 2) || '/' ||
                   substr(PF_JOIN_DATE, 5, 4)
where PF_JOIN_DATE not like '%/%'

this will work: 这将工作:

CREATE TABLE d061_Table1
    ("PF_JOIN_DATE" varchar2(10))
;

INSERT ALL 
    INTO d061_Table1 ("PF_JOIN_DATE")
         VALUES ('01/04/2018')
    INTO d061_Table1 ("PF_JOIN_DATE")
         VALUES ('02042018')
    INTO d061_Table1 ("PF_JOIN_DATE")
         VALUES ('03042018')
    INTO d061_Table1 ("PF_JOIN_DATE")
         VALUES ('04/04/2018')
    INTO d061_Table1 ("PF_JOIN_DATE")
         VALUES ('05042018')
SELECT * FROM dual
;

select * from d061_Table1;
update d061_Table1 set PF_JOIN_DATE=
(substr(PF_JOIN_DATE, 1, 2) || '/' ||
          substr(PF_JOIN_DATE, 3, 2) || '/' ||
          substr(PF_JOIN_DATE, 5, 4))
where not regexp_like(PF_JOIN_DATE, '^[0-9]{2,}/{1}[0-9]{2,}/{1}[0-9]{4,}$');

select * from d061_Table1;

output:
01/04/2018
02/04/2018
03/04/2018
04/04/2018
05/04/2018

With regexp. 用regexp。

update plv_test_table t
set t.pf_join_date = regexp_replace(t.pf_join_date, '^(\d{2})(\d{2})(\d{4})$','\1/\2/\3')

Optionally - depending on size of your table it can be faster to update all or only part of rows. 可选 - 根据表的大小,更新全部或部分行可以更快。 Without where clause this query still correct. 没有where子句,此查询仍然正确。

where t.pf_join_date not like '%/%'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 根据特定材料,从同一列中选择第二,第四行等 - Select every 2nd, 4th row and so on from same column based on specific material 如何在Oracle SQL中选择子字符串(最多4个字符) - How to Select a substring in Oracle SQL up to a 4th char tyoe 如何格式化文件名中第二个和第四个下划线之间的值? - How can I format value between 2nd and 4th underscore in the file name? 如何在 SQL Server 中获取第 2 个和第 4 个星期六的日期列表? - How to get list of 2nd and 4th Saturday dates in SQL Server? 如何将 3 个表的组合插入具有 3 个对应列的第 4 个表中? - How to insert combinations from 3 tables into a 4th table with 3 corresponding columns? 在一行中查找第 2、3、4、5 个非 NULL 值(SQL) - finding 2nd, 3rd, 4th, 5th not NULL values in a row (SQL) 同时更新3列第2表所有字段varchar更新电话号码的帮助 - Update 3 column in same time 2nd table all field varchar update help of phone number 每月第 2 和第 4 个星期四运行的重复 SQL 作业 - Reoccurring SQL job to run on the 2nd and 4th Thursday of every month 使用ROW_NUMBER()将第1个ARRAY与第2个,第3个,第4个等进行比较 - Using ROW_NUMBER () to Compare 1st ARRAY to 2nd, 3rd, 4th, etc 如何联接没有公共列的第四个表 - How to join a 4th table which doesn't have common column
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM