代码之家  ›  专栏  ›  技术社区  ›  Paulo

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

  •  1
  • Paulo  · 技术社区  · 16 年前

    我的问题涉及到在MySQL表中搜索给定初始搜索字符串的匹配城市名称列表,以便处理用HTML实体(ö)编码的特殊字符,如_等。

    例子:

    有一张叫做“城市”的桌子。城市名称的列称为“名称”。有两个城市,Hamberg(ID 1)和H_Meenlinna(ID 2)存储为HäMeenlinna。

    有人用字符串“ham”搜索。标准查询,如

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

    只返回第一个。

    我有一个从实体中解析出字符的regex,但是它是用php实现的,为了完整性,下面提供了它。

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

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Gumbo    16 年前

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