[英]ORACLE SQL Trim ineffective with Regular Expressions
当我简化查询时 ,即
SELECT TO_CHAR(MIN(I.INCIDENTID)) AS "Incident ID",
TRIM(TO_CHAR(I.CREATIONDATE,'DD-MON-YYYY')) AS "Creation Date"
FROM INCIDENT I
GROUP BY TRIM(TO_CHAR(I.CREATIONDATE,'DD-MON-YYYY'))
我懂了
但是,如果我在实际查询中合并了164,000+个不同的行,我将得到
但我希望这样(唯一的区别是,创建日期必须具有正确的日期格式,而不是此复杂的字符串)
我正在从外部Oracle数据库读取日期时间,并且已使用TRIM(I.CREATIONDATE)
成功地修剪了所有多余的空间。
我已经验证了这一点,因为我的SQL查询仅显示了不同的日期值
但是, TRIM(I.CREATIONDATE)
将2/26/2019 11:05:44 AM
变成26-FEB-19 11.05.43.925000 AM
,但我只想要26-FEB-19
当我将正则表达式仅用于获取日期时,即REGEXP_SUBSTR(TRIM(I.CREATIONDATE),'[^ ]+')
,它当然会输出26-FEB-19
,但是由于我得到重复的日期,所以以某种方式添加了额外的空格。
我已经尝试了第二次应用TRIM
,即TRIM(REGEXP_SUBSTR(TRIM(I.CREATIONDATE),'[^ ]+'))
,但我仍然得到重复
然后我尝试先运行正则表达式,然后修剪,但这不起作用,即TRIM(REGEXP_SUBSTR(I.CREATIONDATE,'[^ ]+'))
仍然给出重复项。
请协助
我认为您想要trunc()
,而不是trim()
来删除时间分量。
因此,请尝试:
trunc(i.creationdate)
或者,如果您希望用特定的字符串表示形式的日子:
to_char(i.creationdate, 'YYYY-MM-DD')
尝试to_char:
trim(to_char(column_name,'dd-mon-yy'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.