【问题标题】:How to detect addresses with no number如何检测没有数字的地址
【发布时间】:2016-08-04 19:44:42
【问题描述】:

我有一个专栏address有上千个地址,大部分都有数字但很多地址没有数字,地址是这样的:

- streetname 4
- streetname 8
- streetname 4/5
- streetname

我如何检测没有数字的“街道名称”等字段。 我试过了:

REGEXP '^-?[0-9]+$';

或 isANumber() 但没有一个给出正确的结果

【问题讨论】:

  • 那是您的示例数据吗?街道地址的表达方式有很多种,“街道名称##”只是其中一种。
  • 在我的表格中,地址是这样的:“streetname ##”
  • 如果您最终要做的是解析地址,而这不是像家庭作业那样的学习练习,我会强烈建议您使用像Google Maps API 这样的现有解决方案。有关详细信息,请参阅this question。有很多不同的方式来表达地址,你将在你的职业生涯的剩余时间里围绕你遇到的每一个边缘情况进行编程。
  • @BobKaufman 你现在不应该告诉他……等到他的职业生涯结束再指出这一点。

标签: mysql sql


【解决方案1】:

你可以使用:

address rlike '^[^0-9]*$'

【讨论】:

  • 谢谢@Gordon Linoff 这给了你想要的结果
【解决方案2】:

下面会去掉末尾的数字

TRIM(TRAILING '1234567890 ' FROM fieldname)

所以

WHERE TRIM(TRAILING '1234567890 ' FROM fieldname) <> TRIM(TRAILING ' ' FROM fieldname)

有数字和

WHERE TRIM(TRAILING '1234567890 ' FROM fieldname) = TRIM(TRAILING ' ' FROM fieldname)

不要。

【讨论】:

  • 这将假定 OP 仅在地址末尾查找数字。如果是这样,这是一个聪明的解决方案。
  • 谢谢@GordonLinoff - 我认为这就是问题所在。
【解决方案3】:

如果你想选择包含数字的行

SELECT * FROM table WHERE your_column REGEXP '[0-9]';

或者,如果您想要不包含

的行
SELECT * FROM table WHERE your_column NOT REGEXP '[0-9]';

【讨论】:

  • @GordonLinoff 是的..正确我已经更新了答案
猜你喜欢
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 2013-03-09
相关资源
最近更新 更多