我有一个关于搜索字符串比存储在DB中的字符串长的方法的问题。
例如:DB中存储的字符串为"somestring"。我需要改变它的字符串,例如。"somestringXY"。
我有一个DB与存储模型,但在我需要解析的文件,字符串经常被修改。我能做的是:
- 我可以
SELECT * 'string' from Table
,然后通过foreach和substr/preg_match搜索针。 - 我也可以
SELECT * 'string' FROM Table
到数组,然后通过in_array
函数搜索。 - 我也可以做一个循环,剪最后一个字母,在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.")";
当然,问题是这可能会给你带来不想要的结果,这取决于你在寻找什么以及这些字符串彼此之间的相似程度。但优点是它只调用一次,而不是每次删除一个字母后检查多次。