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