Mysql regexp在<;中匹配相同的子字符串;年份>&书信电报;第0年>&书信电报;第一年>;标签

Mysql regexp在<;中匹配相同的子字符串;年份>&书信电报;第0年>&书信电报;第一年>;标签,mysql,regex,mariadb,Mysql,Regex,Mariadb,问题:是否可以让regexp匹配*2014*字符是匹配的开始。另一种说法是使用regexp来匹配…XXXX…您只需用反斜杠转义斜杠\/ 选择* 从t1开始 其中args REGEXP.*2014.* 更新 选择* 从t1开始 其中args REGEXP.*2014.* Alex:我添加了在线regexp链接来描述溢出问题。我不能只匹配标签,但它们都匹配,这就像一个值数组。我不理解你的问题。在提供的示例中,您有5条记录,并且您只想得到其中的2条,这就是我的查询所做的。是否也要返回另一条记录?将

问题:是否可以让regexp匹配
*2014*
字符是匹配的开始。另一种说法是使用regexp来匹配
…XXXX…您只需用反斜杠转义斜杠
\/

选择*
从t1开始
其中args REGEXP.*2014.*
更新

选择*
从t1开始
其中args REGEXP.*2014.*

Alex:我添加了在线regexp链接来描述溢出问题。我不能只匹配标签,但它们都匹配,这就像一个值数组。我不理解你的问题。在提供的示例中,您有5条记录,并且您只想得到其中的2条,这就是我的查询所做的。是否也要返回另一条记录?将其添加到示例集中,我将尝试修改查询。当然,在问题的末尾添加了第6行和SQLFIDLE链接。最后一行是year=20132015值,但2014查询匹配所有值,因为之前的2014-*标记。我不是只有标签,而是阵列,可以说这是一个挑战。魔法咒语,你做到了。我想使用(括号)并没有坏处,它会在查询字符串中弹出一个关键字*(2014)。*发现了小问题,但我可能可以接受,如果args的顺序是
记录6m20132014-02-22,如2015 this2014-03-01
则year=2014查询错误是由于标记溢出问题导致的匹配。我试着看看应用程序是否可以在保存数据库之前对参数进行排序。
Select * From table1 Where args REGEXP '>.*(2014).*<\/year'
<title>Record 1</title><start>2014-01-31</start><year>text 2013 text</year><end>2014-02-17</end>
<title>Record 2</title><start>2014-01-03</start><year>any 2014 text</year><end>2014-01-26</end>
<title>Record 3</title><start>2014-03-07</start><year>aa 2015 bb</year><end>2014-03-12</end>
<title>Record 4m</title><start>2014-02-22</start><year>2014</year><year_0>like 2015 this</year_0><end>2014-03-01</end>
<title>Record 5m</title><start>2015-02-23</start><year>bb 2012 cc</year><year_0>2014 dd</year_0><year_1>2014</year_1><end>2015-03-02</end>
<title>Record 6m</title><start>2014-02-22</start><year>2013</year><year_0>like 2015 this</year_0><end>2014-03-01</end>
<title>Record 7m</title><year>2013</year><start>2014-02-22</start><year_0>like 2015 this</year_0><end>2014-03-01</end>
SELECT * 
FROM t1
WHERE args REGEXP '<year>.*2014.*<\/year>'
SELECT * 
FROM t1
WHERE args REGEXP '<year.*>.*2014.*<\/year.*>'