在mysql选择查询中需要正则表达式

时间:2014-12-18 10:51:10

标签: mysql regex phpmyadmin

我正在编写mysql查询,我需要将用户输入的数据与数据库选项卡中的sku列进行比较

查询就像

SELECT * 
FROM  `is_product_info` 
WHERE REPLACE(  '-',  '', sku ) LIKE  '%ETI2006%'

这样如果数据库中的sku在sku中包含“ - ”,我会在比较前用“”替换所有连字符。

所以无论sju是否包含ETI2006或ETI-2006,它都会出现输出

4 个答案:

答案 0 :(得分:1)

我想你可能会喜欢这个

SELECT * FROM is_product_info WHERE REPLACE( sku , '-', '' ) LIKE '%ETI2006%'

答案 1 :(得分:0)

我没有尝试运行MySQL,但这应该可行:

SELECT * 
FROM  `is_product_info` 
WHERE sku REGEXP REPLACE('ETI-2006','-','-?');

答案 2 :(得分:0)

我在替换语法时犯了错误,它适用于下面的一个:

SELECT * FROM is_product_info WHERE REPLACE(sku,' - ','')LIKE'%ETI2006%'

答案 3 :(得分:0)

在每一行上使用replace()会降低它的速度。

所有这些方法都应该更快 - 看看哪种方法最适合你:

选项1 - 使用LIKE两次:

WHERE sku LIKE '%ETI-2006%'
   OR sku LIKE '%ETI2006%'

选项2 - 使用RLIKE一次:

WHERE sku RLIKE 'ETI-?2006'