mysql使用带有正则表达式的变量

时间:2015-07-20 11:33:39

标签: mysql regex variables

我如何在里面使用Mysql变量... Mysql正则表达式?

例如,

SET @my_var = (
SELECT 
year 
FROM blah
LIMIT 1);

SELECT 
foo,
bar
FROM my_table
WHERE date REGEXP @my_var%

也试过...... WHERE date REGEXP '@my_var%'

我要做的是...... WHERE date REGEXP '2015%'

2 个答案:

答案 0 :(得分:1)

您可以使用concat

where col regexp concat(@my_var, '%')

但有两件事:

  1. 您的模式看起来更像是LIKE模式,而不是REGEXP模式。
  2. 请勿将LIKEREGEXP用于日期。 MySQL有许多有用的日期函数。
  3. 所以,我想你想要:

    where year(date) = 2015
    

    或:

    where date >= '2015-01-01' and date < '2016-01-01'
    

    最后一个版本是首选版本,因为它可以利用索引(如果可用)。

答案 1 :(得分:0)

另一种方式,取决于您想要的组织方式...

    SET @var = 101;
    SET @regex = concat("^",@var,"$");

    SELECT * FROM db.table 
    WHERE col REGEXP @regex;