背景
今天整理MySQL的脚本文件,发现Date类型字段MySQL可以直接插入 '2019-08-01' 这样的数据,在Oracle里执行就会报错:
其实只要为每个字符串加上to_date()方法,转换为日期格式就好了,然鹅SQL很多。。
步骤
毕竟那啥是第一生产力嘛,恰好Eclipse的查找/替换功能里提供了“Regular Expressions”选项,我们就来好好利用一下。
- 首先,明确一下我们的需求
比如这是原来的SQL:
INSERT INTO TEST (ID, NAME, CREATE_TIME) VALUES ('1', 'abc', '2019-08-07')
这是我们想要的SQL:
INSERT INTO TEST (ID, NAME, CREATE_TIME) VALUES ('1', 'abc', to_date('2019-08-07', 'yyyy-MM-dd'))
- 其次,你要会写正则表达式,这里我简单写了一个:
['][0-9]{4}[\-][0-9]{2}[\-][0-9]{2}[']
['] 表示一个单引号
[0-9]{4} 表示四位数字
[-] 表示一个短横线(短横线在正则表达式里有其它含义,这里转义一下) -
然后,打开脚本文件,Ctrl+F打开查找/替换功能,在Eclipse里查询试一下:
- 找到了一个日期,木有问题,然后写一下替换的表达式:
to_date($1, 'yyyy-MM-dd')
这里的$1用来表示查找表达式中查询结果的部分或全部,范围用小括号来限定,比如,你要取四位年份,就把[0-9]{4}
括起来,像这样:
[']([0-9]{4})[\-][0-9]{2}[\-][0-9]{2}[']
这里我们要取整个日期,包括两边的单引号:
(['][0-9]{4}[\-][0-9]{2}[\-][0-9]{2}['])
然后填到Replace with栏,点击Replace All:
搞定✔