MySQL查询使用正则表达式处理编码字符

时间:2009-04-26 19:18:37

标签: mysql regex

我的问题是在MySQL表中搜索匹配的城市名称列表,给出一个初始搜索字符串,目的是处理用html实体(& ouml;)编码的特殊字符ö等。

示例:

有一张名为'cities'的表格。城市名称的列称为“名称”。有两个城市Hamberg(id 1)和Hämeenlinna(id 2)存储为H& auml; meenlinna。

有人使用字符串“Ham”进行搜索。标准查询,例如

SELECT id, name FROM cities WHERE name LIKE '%Ham' 

只会返回第一个。

我有一个正则表达式解析实体中的字符,但它是用PHP实现的,下面提供了完整性。

preg_replace("/&(.).*;/", '$1', $city_name);

是否有查询要包含大多数包含实体的单个字符?

1 个答案:

答案 0 :(得分:1)

您不应在数据库中使用HTML字符引用。相反,您应该选择正确的encoding and collation并以纯文本格式存储数据。