MySQL正则表达式返回两列之间至少有一个单词匹配的所有记录

时间:2015-09-05 14:19:58

标签: mysql regex

我的数据库有2列包含文字。当它说3条记录如下:

rec#   col1             col2
1      my name is       fred is
2      john             mike
3      today not sat    not it sat

我很感激帮助构建一个将返回记录号的正则表达式:

1 - >因为“是”匹配

3 - >因为“'not”和“sat”匹配(即至少存在一个匹配)

2 个答案:

答案 0 :(得分:1)

我认为你可以这样做:

select t.*
from table t
where col1 rlike replace(col2, ' ', '|');

这会将col2转换为正则表达式。所以,请注意,这个答案对col2的内容非常敏感。如果它包含正则表达式特殊字符,那么这可能不起作用。

答案 1 :(得分:0)

“匹配”是什么意思?

//first new Imagemin() .src('./'+req.file.path) .dest('./compressed/') .use(Imagemin.optipng({optimizationLevel: 3})) .run(function (err, files) { //console.log(files[0]);} }); //this is next var compress = fs.statSync('./compressed/'+req.file.filename); console.log(req.file); res.json({ filename: req.file.filename, originalsize: req.file.size, compressedsize: compress["size"] }); 会找到SELECT至少包含其中一个词col1isnot的行:

sat

这表示 {/ 1>} SELECT rec_num FROM tbl WHERE col1 REGEXP '[[:<:]](is|not|sat)[[:>:]]'; col1中至少存在其中一个词:

col2

SELECT rec_num FROM tbl WHERE col1 REGEXP '[[:<:]](is|not|sat)[[:>:]]' AND col2 REGEXP '[[:<:]](is|not|sat)[[:>:]]'; 更改为AND,询问 (或两者)列中是否存在其中一个词。

如果你需要相同的字(is / not / sat)来匹配 ORcol1,那就更复杂了:

col2

如果您的意思是其他,请练习提出准确的问题。

<强>附加物

在SQL中发现两个文本字段之间共有哪些单词(如果有)是不实际的。这样的任务最好用应用程序编程语言(PHP,Java,Perl,...)来完成。