将两个String与MySQL进行比较

时间:2010-06-18 15:36:46

标签: mysql sql string string-comparison

我不想在SQL请求中比较两个字符串,因此我可以检索最佳匹配,目的是向操作员提出可能的最佳邮政编码。 例如,在法国,我们有Integer Zip代码,所以我提出了一个简单的请求:

SELECT *
FROM myTable
ORDER BY abs(zip_code - 75000)

此请求首先返回离巴黎最近的数据。

不幸的是,英国有像AB421RS这样的邮政编码,所以我的请求无法做到。 我在SQL Server中看到一个函数'Difference':http://www.java2s.com/Code/SQLServer/String-Functions/DIFFERENCEworkoutwhenonestringsoundssimilartoanotherstring.htm

但我使用MySQL ..

有没有人有一个好主意在一个简单的请求中做这个技巧?

PS:Levenshtein Distance不会这样做,因为我真的不想比较字符串,如果它们是数字。 ABCDEF必须更接近AWXYZ而不是ZBCDEF。

1 个答案:

答案 0 :(得分:2)

好的,我必须停止提问并在!!之后找到答案。

对于社区,我将会做的是:

select *
from myTable
order by abs(ascii(substring(zip_code,1,1)) - ascii(substring('AAAAA',1,1))) asc,
         abs(ascii(substring(zip_code,2,1)) - ascii(substring('AAAAA',2,1))) asc,
         abs(ascii(substring(zip_code,3,1)) - ascii(substring('AAAAA',3,1))) asc,
         abs(ascii(substring(zip_code,4,1)) - ascii(substring('AAAAA',4,1))) asc,
         abs(ascii(substring(zip_code,5,1)) - ascii(substring('AAAAA',5,1))) asc