MySQL选择正则表达式

时间:2015-10-13 13:53:39

标签: mysql regex

我在MySQL中有一个表,TAB_FILE有以下列(file_pattern包含对应于文件名的正则表达式) -

client_id | file_pattern
------------------------
91 | ^s101-XXX-typeA_\d{4}-\d{2}-\d{2}.csv.gz$
92 | ^s102-YYY-typeA_\d{4}-\d{2}-\d{2}.csv.gz$

我有一个包含文件名的文件列表,例如

file_names.txt - 
s101-XXX-typeA_2015-10-12.csv.gz
s102-YYY-typeA_2015-10-10.csv.gz

我想编写一个查询来查找file_names.txt中每个文件名的client_id

cat file_names.txt | while read line
do
  mysql -u*** -p*** DB1 -e "select client_id from TAB_FILE where $line rlike file_pattern"
done

此SQL查询无效。对此有任何帮助将非常感激。

2 个答案:

答案 0 :(得分:1)

MySQL支持POSIX风格的正则表达式,但不支持与Perl兼容的正则表达式。 在您的示例中,您必须使用[[:digit:]]代替\d才能使其正常运行。

答案 1 :(得分:0)

您需要将“$ line”参数包装成引号,例如:

<a href="{{ URL::to('dashboard', $username)}}" class="logo">
      <span class="logo-mini"><b>cpy</b></span>
      <span class="logo-lg"><b>Company</b></span>
 </a>

然后它会起作用。