純粋に英数字の文字列( "abc123")があり、それがデータベース列にあるかどうかを確認したいと思います。非英数字の文字はすべて無視して比較します。 "abc〜!@#$%^ & *()123"などが一致します。英数字の一致フィールドのみ
MySQLでこれを行う簡単な方法はありますか?好ましくは関数を定義しないでください。私はREGEXPの比較で可能かもしれないと思っていた。
純粋に英数字の文字列( "abc123")があり、それがデータベース列にあるかどうかを確認したいと思います。非英数字の文字はすべて無視して比較します。 "abc〜!@#$%^ & *()123"などが一致します。英数字の一致フィールドのみ
MySQLでこれを行う簡単な方法はありますか?好ましくは関数を定義しないでください。私はREGEXPの比較で可能かもしれないと思っていた。
が、これはあなたが定期的にやっているだろう何かであれば、私は、その後、あなたの 'の新しい列をThe_Column REGEXP $regexp
テーブルが大きい場合は、列の関数を実行するとテーブルスキャンが実行されます。アルナム文字だけを使って別の列を作成してからそれを真っ直ぐ比較するのはどうでしょうか?
追加します..この正規表現で
$regexp = implode('[^0-9a-zA-Z]*', str_split(remove_nonalphanums($word)));
をそれを考え出しました正規化された '文字列とその列を検索します。データベース内での正規表現のマッチングは便利ですが、非常に非効率的です。クライアント上での検索を正規化し、少し余分なDB領域を使用する方がよいでしょう。
テーブルはそれほど大きくありません(今は150行、最大2,000行) – babonk