2

我想要做的是确定(使用 Teradata SQL)一个人的邮政编码是否被意外地放在了地址行上。我查看了各种论坛,但找不到任何类似的问题。

最终,我想写一些类似的东西:

Where address_line_1 like '%[0-9][0-9][0-9][0-9][0-9]%'

有任何想法吗?

目标数据库是 Teradata 13.x

4

3 回答 3

6

如果您想检查整个列以查看它是否仅包含邮政编码,您可以尝试以下操作:

where address_line_1 between '00000' and '99999'

但是,如果您正在考虑在整个字符串中搜索任何出现的五个连续数字,那么这无论如何都不是一个好的测试。例如,以下将是一个完全有效的邮寄地址:

28305 Southwest Main Street

加载数据后进行有效性检查很困难;这样的任务确实应该在加载过程中执行。

于 2012-12-28T16:30:37.363 回答
1

查找与此正则表达式匹配的所有条目[^0-9][0-9][0-9][0-9][0-9][0-9][^0-9]

因为这将在某些文本中找到正好 5 位数长的数字,假设这是邮政编码的定义。

于 2012-12-27T21:04:36.523 回答
0

如果您的address_line_1中有四位数字,则在“00000”和“99999”之间的address_line_1将不起作用,因为它会拾取它们在哪里address_line_1 like '%[0-9][0-9][0-9][ 0-9][0-9]%' 将是一个更好的解决方案。

于 2021-03-25T17:18:12.763 回答