我正在尝试在SQL Server数据库中进行三字串(每个地址)和一列(“地址”)之间的地址匹配。例如,我在此数组变量中有一个字符串123 main st
,并且感兴趣的列中有123 main st. #A1
的条目。以下是我想查询或脚本的内容。
123 main st. #A1
1123
,main
和st
解决此问题的有效且快捷的方法是什么?我是按照以下方式做到这一点的。这就是我现在正在做的事情:
SELECT *
FROM some_table
WHERE UPPER(address) LIKE UPPER('123%')
AND UPPER(address) LIKE UPPER('%main%')
AND UPPER(address) LIKE '%st%';`
答案 0 :(得分:0)
解决此问题的有效且快捷的方法是什么?我
修复数据库。该设计强制执行程序员的不良行为,因为数据库设计器根本无法解决这个(复杂的)问题。
在哪里上(地址)像上('123%')
这是 - 使用非案例sensitibve校对 - 与“123%”之类的地址相同,只是强制进行慢速表扫描。 Gratulations。
其余的一样。
基本上回到这里的数据库设计 - 你永远不会解决这个问题。一种方法是在书写时标准化所有数据,因此您无需在阅读时进行复杂的查询。
答案 1 :(得分:-1)
为正则表达式匹配创建一个CLR函数,并在SQL Server中使用它。
答案 2 :(得分:-1)
我最终保留了我在OP中所做的事情。它适用于我的目的。