[英]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
. 它的格式为ddmmyyyy
和dd/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.