2016-08-19 17 views
0

DBに格納されている文字列より長い文字列を検索するためのaproachに関する質問があります。DBに格納された文字列よりも長い文字列を検索する方法 - SQL Server、PHP

たとえば、DBに格納される文字列は "somestring"です。私は変更された文字列でそれをmachする必要があります。 "somestringXY"

私はDBをモデルに保存していますが、解析する必要があるファイルに文字列が変更されることがよくあります。 私にできることは次のとおりです。私はSELECT * 'string' from Table、その後のforeachとSUBSTR /するpreg_matchを経由して針を検索することができます

  1. SELECT * 'string' FROM Tableを配列にして、in_array関数で検索することもできます。
  2. 私もループを作り、最後の文字をカットし、DBで選択して一致を見つけることができます。一致しない場合は、再度ループします。

のは、文字列(somestringXY、somestringX、somestring)は存在しませんDBにおけるので、二重の一致があってはならないことを言ってみましょう。

他にもアプローチがありますか?もちろん、SQLのように検索された文字列がDBに格納されているため、有用ではありません。

+0

もう片方から 's'で始めるといいでしょう – Drew

+0

データベースに' some'と 'somestring'の両方があり、ファイルに' somestringXY'があるとどうなりますか? 'some'は' stringXY'を追加するように変更されているのですか? 'somestring'が' XY'を追加するように変更されたのでしょうか?また、追加のみ、またはすべてのタイプの変更を扱っていますか? – apokryfos

+1

SQL ServerまたはMySQL?関連タグのみを含める –

答えて

0

これを行うための具体的なMySQLの方法が存在するかどうかはわからないが、私はこのルートを行くだろう:

$substrarray = array("'somestri'","'somestrin'", "'somestring'","'somestringX'","'somestringXY'"); 

$substrings = implode(",",$substrarray); 

$query = "SELECT * FROM table WHERE string IN (".$substrings.")"; 

もちろんの問題は、これが何をによって、あなたの不要な結果をもたらす可能性があるということですあなたが探しているとどのようにそれらの文字列がお互いに似ています。しかし、プロは、手紙を削除するたびにチェックするときに、複数の代わりに1つのコールしか行わないということです。

関連する問題