SQL / PHP:比较地址

时间:2011-12-02 15:50:35

标签: sql sql-server

我正在尝试在SQL Server数据库中进行三字串(每个地址)和一列(“地址”)之间的地址匹配。例如,我在此数组变量中有一个字符串123 main st,并且感兴趣的列中有123 main st. #A1的条目。以下是我想查询或脚本的内容。

  • 找到此条目123 main st. #A1
  • 查找包含字符串1123mainst
  • 的所有条目
  • 忽略订单
  • 忽略字母案例

解决此问题的有效且快捷的方法是什么?我是按照以下方式做到这一点的。这就是我现在正在做的事情:

SELECT * 
FROM some_table 
WHERE UPPER(address) LIKE UPPER('123%') 
AND UPPER(address) LIKE UPPER('%main%') 
AND UPPER(address) LIKE '%st%';`

3 个答案:

答案 0 :(得分:0)

  

解决此问题的有效且快捷的方法是什么?我

修复数据库。该设计强制执行程序员的不良行为,因为数据库设计器根本无法解决这个(复杂的)问题。

  

在哪里上(地址)像上('123%')

这是 - 使用非案例sensitibve校对 - 与“123%”之类的地址相同,只是强制进行慢速表扫描。 Gratulations。

其余的一样。

基本上回到这里的数据库设计 - 你永远不会解决这个问题。一种方法是在书写时标准化所有数据,因此您无需在阅读时进行复杂的查询。

答案 1 :(得分:-1)

为正则表达式匹配创建一个CLR函数,并在SQL Server中使用它。

答案 2 :(得分:-1)

我最终保留了我在OP中所做的事情。它适用于我的目的。