如何搜索字符串比存储在数据库- SQL Server, PHP


how to search string longer than stored in DB - SQL Server, PHP

我有一个关于搜索字符串比存储在DB中的字符串长的方法的问题。

例如:DB中存储的字符串为"somestring"。我需要改变它的字符串,例如。"somestringXY"。

我有一个DB与存储模型,但在我需要解析的文件,字符串经常被修改。我能做的是:

  1. 我可以SELECT * 'string' from Table,然后通过foreach和substr/preg_match搜索针。
  2. 我也可以SELECT * 'string' FROM Table到数组,然后通过in_array函数搜索。
  3. 我也可以做一个循环,剪最后一个字母,在DB上做一个选择,找到匹配。如果没有匹配,重新循环。

假设不应该有双匹配,所以在DB中不会有字符串(somestringXY, somestringX, somestring)。

也许还有其他方法?当然,像在SQL中是没有帮助的,因为搜索字符串比存储在数据库更长。

我不知道是否存在特定的MySQL方式来做到这一点,但我会选择这条路线:

$substrarray = array("'somestri'","'somestrin'", "'somestring'","'somestringX'","'somestringXY'");
$substrings = implode(",",$substrarray);
$query = "SELECT * FROM table WHERE string IN (".$substrings.")";
当然,问题是这可能会给你带来不想要的结果,这取决于你在寻找什么以及这些字符串彼此之间的相似程度。但优点是它只调用一次,而不是每次删除一个字母后检查多次。