我想要做的是确定(使用 Teradata SQL)一个人的邮政编码是否被意外地放在了地址行上。我查看了各种论坛,但找不到任何类似的问题。
最终,我想写一些类似的东西:
Where address_line_1 like '%[0-9][0-9][0-9][0-9][0-9]%'
有任何想法吗?
目标数据库是 Teradata 13.x
如果您想检查整个列以查看它是否仅包含邮政编码,您可以尝试以下操作:
where address_line_1 between '00000' and '99999'
但是,如果您正在考虑在整个字符串中搜索任何出现的五个连续数字,那么这无论如何都不是一个好的测试。例如,以下将是一个完全有效的邮寄地址:
28305 Southwest Main Street
加载数据后进行有效性检查很困难;这样的任务确实应该在加载过程中执行。
查找与此正则表达式匹配的所有条目[^0-9][0-9][0-9][0-9][0-9][0-9][^0-9]
因为这将在某些文本中找到正好 5 位数长的数字,假设这是邮政编码的定义。
如果您的address_line_1中有四位数字,则在“00000”和“99999”之间的address_line_1将不起作用,因为它会拾取它们在哪里address_line_1 like '%[0-9][0-9][0-9][ 0-9][0-9]%' 将是一个更好的解决方案。