Praveen Prasannan Asked: 2012-10-17 20:37:05 +0800 CST2012-10-17 20:37:05 +0800 CST 2012-10-17 20:37:05 +0800 CST 如何在 MySQL 全文搜索中避免某些字符? 772 我有一个名为类型parcel_number的列。varchar它包含像ab-cd-ef和这样的值uvwxyz。搜索abcdef或uv-wx-yz不返回那些记录。 我应该如何编写查询来满足这个要求? mysql full-text-search 1 个回答 Voted Best Answer ppeterka 2012-10-17T23:54:40+08:002012-10-17T23:54:40+08:00 这种情况似乎是错误设计决策的结果。 由于该列不是存储人类可读的内容,而是用作标识符,因此该列的内容应具有统一的结构,可以带或不带破折号,但不能混用!您也很难在此列上设置 UNIQUE 约束... 我建议从表中删除破折号: UPDATE table SET parcel_number = replace(parcel_number,'-', ''); MySQL 替换参考 然后你也只需要从搜索字符串中去掉破折号。我假设ab-cd-ef与abcdef. 但是请注意,这样做意味着a-bcd-ef并且ab-cd-ef将被视为相同。
这种情况似乎是错误设计决策的结果。
由于该列不是存储人类可读的内容,而是用作标识符,因此该列的内容应具有统一的结构,可以带或不带破折号,但不能混用!您也很难在此列上设置 UNIQUE 约束...
我建议从表中删除破折号:
MySQL 替换参考
然后你也只需要从搜索字符串中去掉破折号。我假设
ab-cd-ef
与abcdef
. 但是请注意,这样做意味着a-bcd-ef
并且ab-cd-ef
将被视为相同。