【问题标题】:Mysql: How to trim and compare database fields with alphanumeric values?Mysql:如何修剪和比较具有字母数字值的数据库字段?
【发布时间】:2013-10-15 09:15:45
【问题描述】:

我的网站有一个搜索框。我有一个数据库字段值,例如:“宠物的名字是吉米”。当有人搜索“宠物名称”时,我也需要获取该行。有没有办法只比较 mysql WHERE 条件中的字母数字值?也就是说 "Pet's name""Pets name" 应该返回同一行。那就是比较需要类似于:“petsname = petsname”。仅比较字母数字字符。

我已经尝试用 mysql REPLACE 替换 "'",但我坚信存在更好的解决方案。

【问题讨论】:

  • 不仅是撇号,我还需要在不使用mysql“REPLACE”的情况下避免所有特殊字符。那就是比较需要类似于:“petsname = petsname”。仅比较字母数字字符。
  • 使用该信息更新您的帖子!并在页面下方进一步阅读SOUNDEX
  • 为什么不能使用 MySQL replace
  • 你考虑过fulltext search吗? SELECT * FROM myTable WHERE match (somefield) against ('"pet\'s name"' IN BOOLEAN MODE);

标签: php mysql sql where


【解决方案1】:
$str = "Pet's name is Jimmy";

$str1  = addslashes($str);  // Outputs: Pets name is Jimmy

你可以这样做

SELECT * FROM pet  WHERE name like '%$str1%';

【讨论】:

  • 请再过一遍问题,是关于mysql 'WHERE'条件的。
  • 感谢您的回答。当有人搜索“宠物”而不是“宠物”时,我需要返回同一行。
  • 如果您想删除特殊字符并进行搜索,请试试这个$str = preg_replace('/[^A-Za-z0-9\. -]/', '', $str; // 删除除 A-Z、a-z、0-9、点、连字符和空格以外的所有字符
  • 我需要避免所有特殊字符。那就是比较需要类似于:“petsname = petsname”。仅比较字母数字字符。请注意,特殊字符存在于数据库字段中。
  • 使用该信息更新您的帖子!
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多