2011-06-24 60 views
0

假設我有一個純粹的字母數字字符串(「abc123」),我想查看它是否在數據庫列中,但有一個警告 - 我希望在比較中忽略所有非字母數字字符。因此,例如,「abc〜!@#$%^ & *()123」將匹配。只有字母數字字符的匹配字段

有沒有一種簡單的方法可以在MySQL中執行此操作,最好不定義任何函數?我認爲這可能與REGEXP比較。

回答

0

想通了這個正則表達式。

$regexp = implode('[^0-9a-zA-Z]*', str_split(remove_nonalphanums($word))); 

然後我做The_Column REGEXP $regexp

0

如果你的表很大,那麼在列上執行任何函數都會導致表掃描。那麼只有用alnum字符創建另一個列,然後直接比較這個列呢?

+0

表格不是那麼大(現在150行,最多2,000行) – babonk

0

如果是這樣的東西,你會定期做,然後添加新列的「標準化'字符串並在該列上搜索。在數據庫中進行正則表達式匹配很方便,但效率很低。最好只在客戶端規範化搜索,並使用一些額外的數據庫空間。

相關問題