Yani bir sütunum var, incarceration_date, aslında bir metin alanı ve bunu bir tarih olarak yayınlamak istiyorum. Normalde sorun yok, fakat bu sütundaki her değerin, sonunda tarih fonksiyonunda hata yapmasını sağlayan, sonu olmayan bir boşluk (& # 160) olduğu görülüyor.PostgreSQL'de aralıksız boşlukları bir dizeden nasıl silebilirim?
Bu soruna başarı olmadan iki farklı yaklaşım denedim.
girişimi 1:
trim(both chr(65279) from incarceration_date)::DATE
girişimi 2: [: alanı:] [] sıfır genişlik kesintisizlik alanı içermez
regexp_replace(incarceration_date, '\s+$', '')::DATE
ikinci girişim nedeniyle başarısız olduğunu düşünüyorum.
Bu özel örnekte, alanların tümü aynı genişlikte olduğundan, bu soruna geçici olarak yalnızca ilk on karakteri tarih işlevine geçirerek çalışabilirim. Ancak, içe aktarılan verilerde kullandığım bazı genel metin temizleme işlevlerine sahibim ve bu karakteri kullanabilmelerini istiyorum.
"06/17/2011 "
Ama bunu sorun karakter kopyalar için SO doğru emin değilim:
örnek bir dize buna benzemez.
PostgreSQL-9.5.0 kullanıyorum.
kodlama yoluyla incarceration_date kolon çıkışının bir sıranın çıkış (incarceration_date :: bytea 'heks') grubudur:
30362f31372f32303131c2a0
tüm satırları c2a0
ile sona erer.
Sunucu kodlaması UTF8'dir. eğer
regexp_replace(incarceration_date, '[0-9/]', '')::DATE
Alternatif performans için: @ThiefMaster belirtildiği gibi
Sen başka birşey kaldırmak olabilir '[0-9 /]' dize – ThiefMaster
sizi 'kodlamak (incarceration_date :: bytea, 'altıgen')' numune sonucunu verebilir misiniz? – Abelisto
@Abelisto ben soruya bu bilgileri ekledik; ('' gösteri server_encoding) Ayrıca veritabanı kodlamasını sağlar. –