我不记得曾经见过这样的字段,但它将城市,州和邮政编码组合成一个varchar2字符串。幸运的是,我相信大多数领域都处于相同的城市空间状态,空间邮政编码格式,但我开始发现一些偏离该规范的领域。
现在我正试图找出所有这些不同的条件 在数据库中有超过500万行,我的查询不能满足我的需求。
我开始时:
SELECT PROJECT_CTY_ST_ZIP FROM PAYMENT WHERE PROJECT_CTY_ST_ZIP LIKE '%' || CHR(32) || '%';
然后尝试了:
SELECT PROJECT_CTY_ST_ZIP FROM PAYMENT WHERE PROJECT_CTY_ST_ZIP LIKE '% %' AND PROJECT_CTY_ST_ZIP LIKE '% %' AND PROJECT_CTY_ST_ZIP LIKE '% %';
但它们都是基于前导和尾随空格拉动的,我真的很想在文本内部找到空格。我不想删除它们,只需用查询识别它们,这样我就可以在我的java代码中正确解析它们,然后再插入一个插入到另一个表中的city,state和zipcode字段中。
虽然它没有在这里显示,但我在IA中找到了这个字段,没有前导空格,然后是一个前导空格,然后是两个前导空格。我修剪了带有修剪的前导空间。
WEST LIBERTY,IA 52776
这是我没想到的最后一个,我想看看是否有其他条件可能不寻常,但我的查询找不到它们,因为空格位于文本的中间:
TRUTH OR CONSQUQUENCE,NM 87901
我如何查询查找这些不同的记录?
答案 0 :(得分:3)
此查询用点(。)替换每个空格,以便您可以看到它们
SELECT
REGEXP_REPLACE(PROJECT_CTY_ST_ZIP,
'([[:space:]])',
'.') spaces_or_now_dots
FROM PAYMENT
此查询查找具有一个或多个空格的查询。
SELECT PROJECT_CTY_ST_ZIP
FROM PAYMENT
where REGEXP_LIKE(PROJECT_CTY_ST_ZIP,
'[[:space:]]'
)
我没有考虑过开头和结尾的空格情况,因为你已经照顾过了。