假设我有一个纯字母数字字符串("abc123"),我想看看它是否在数据库列中,但有一个警告--我希望在比较中忽略所有非字母数字字符。例如,"abc~!@#$%^&*()123“将匹配。
在MySQL中有没有一种简单的方法可以做到这一点,最好不用定义任何函数?我在想,也许可以使用REGEXP进行比较。
发布于 2011-06-25 02:50:07
用这个正则表达式解决了这个问题..
$regexp = implode('[^0-9a-zA-Z]*', str_split(remove_nonalphanums($word)));然后我做The_Column REGEXP $regexp
发布于 2011-06-24 09:31:59
如果您的表很大,那么在列上执行任何函数都将导致表扫描。创建另一个仅包含alnum字符的列,然后与之进行直接比较如何?
发布于 2011-06-26 08:26:50
如果这是您经常要做的事情,那么为您的“标准化”字符串添加一个新列,并在该列上进行搜索。在数据库中执行正则表达式匹配很方便,但效率非常低。最好只是在客户机上标准化你的搜索,并使用一点额外的数据库空间。
https://stackoverflow.com/questions/6462313
复制相似问题