我有一个问题,关于搜索字符串的时间长于存储在数据库中的字符串。
例如:存储在DB中的字符串是“somestring”。我需要用改变的字符串来加工它,例如“somestringXY”。
我有一个存储模型的数据库,但在我需要解析的文件中,字符串经常被修改。 我能做的是:
SELECT * 'string' from Table
然后通过foreach和substr / preg_match搜索针。 SELECT * 'string' FROM Table
进行数组,然后通过in_array
函数进行搜索。 假设不应该有双重匹配,所以在DB中不会有字符串(somestringXY,somestringX,somestring)。
也许还有其他方法?当然,在SQL中没有用,因为搜索的字符串更长,然后存储在DB中。
答案 0 :(得分:0)
我不知道是否存在特定的MySQL方式,但我会选择这条路线:
$substrarray = array("'somestri'","'somestrin'", "'somestring'","'somestringX'","'somestringXY'");
$substrings = implode(",",$substrarray);
$query = "SELECT * FROM table WHERE string IN (".$substrings.")";
问题当然是这可能会给你带来不必要的结果,这取决于你正在寻找什么以及这些字符串与彼此的相似程度。但专业人士认为,每次删除一封信后,只检查一次,而不是多次。