如何在字符串列中搜索五位数字?

时间:2012-12-27 20:57:19

标签: sql string wildcard numeric teradata

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

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

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

有什么想法吗?

目标数据库是Teradata 13.x

3 个答案:

答案 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]%' 将是更好的解决方案。