所以我有一个列 incarceration_date,它实际上是一个文本字段,我想将其转换为日期。通常没问题,但似乎此列中的每个值最后都有一个不间断空格( ),这当然会导致日期函数错误。
我尝试了两种不同的方法来解决这个问题,但没有成功。
尝试1:
trim(both chr(65279) from incarceration_date)::DATE
尝试2:
regexp_replace(incarceration_date, '\s+$', '')::DATE
我认为第二次尝试失败是因为 [[:space:]] 不包括零宽度不间断空间。
在这个特定的例子中,这些字段的宽度都是一样的,所以我可以通过只将前十个字符传递给 date 函数来解决这个问题。但是,我确实有一些用于导入数据的通用文本清理功能,我希望它们能够处理这个字符。
示例字符串如下所示:
"06/17/2011 "
但我不确定问题字符是否正确复制到 SO。
我正在使用 PostgreSQL-9.5.0。
通过 encode(incarceration_date::bytea, 'hex') 输出的 incarceration_date 列的一行输出为:
30362f31372f32303131c2a0
所有行都以c2a0
.
服务器编码为 UTF8。