ORACLE SQL Trim 对正则表达式无效
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 使用 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,但这不起作用,即 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'))
澄清
当我简化
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 使用 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,但这不起作用,即 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'))