选择不完全匹配的结果

时间:2017-01-18 16:01:41

标签: mysql

我需要找出从db中选择记录的最佳方法,该字符串与db中的字符串不完全匹配。

存储在db中的那个是:

 So-Fi (S. 1st St. District), 78704 (South Austin), Bouldin Creek, South Congress

我要匹配的是:

$myArea = 'So-Fi-S-1st-St-District-78704-South-Austin-Bouldin-Creek-South-Congress';

$ myArea实际上是从db获取的值,并在不同的页面上为SEO友好的URL格式化。

我试过

SELECT* FROM t1 WHERE area = REPLACE('".$myArea."', '-', '') 

但显然没有比赛。基本上,因为我无法驯服$ myArea并将其格式化回db中的内容。

有没有办法删除所有标点符号,这样在选择之前只留下db中的字母数字?

1 个答案:

答案 0 :(得分:1)

执行这样的查找会让您感到头痛,有许多特殊情况您无法承保。

为什么不添加" slug"字段到您的数据库,您在其中放置SEO友好字符串。这样你就可以直接查看slug而无需进行大量的字符串操作。

数据库表示例:

CREATE TABLE `locations` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `slug` varchar(255) NOT NULL,
  `location` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;

然后你做这样的查找:

SELECT location from locations where slug = :slug;