2011-06-24 57 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

如果是这样的东西,你会定期做,然后添加新列的“标准化'字符串并在该列上搜索。在数据库中进行正则表达式匹配很方便,但效率很低。最好只在客户端规范化搜索,并使用一些额外的数据库空间。

相关问题