仅在字母数字上匹配字段

时间:2011-06-24 01:12:04

标签: mysql regex

假设我有一个纯粹的字母数字字符串(“abc123”),我想知道它是否在数据库列中,有一点需要注意 - 我希望在比较中忽略所有非字母数字字符。所以“abc~!@#$%^& *()123”会匹配,例如。

在MySQL中是否有一种简单的方法可以做到这一点,最好不要定义任何函数?我认为通过REGEXP比较可能有可能。

3 个答案:

答案 0 :(得分:0)

如果您的表很大,那么对列执行任何功能将导致表扫描。如何仅使用alnum字符创建另一个列,然后对其进行直接比较?

答案 1 :(得分:0)

用这个正则表达式来计算..

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

然后我做The_Column REGEXP $regexp

答案 2 :(得分:0)

如果这是您将定期执行的操作,则为“规范化”字符串添加新列并搜索该列。在数据库中进行正则表达式匹配很方便但效率很低。最好只是在客户端上规范化搜索并使用一些额外的数据库空间。