Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql正则表达式中查找数组元素的每个排列_Mysql_Sql_Regex_Select - Fatal编程技术网

在mysql正则表达式中查找数组元素的每个排列

在mysql正则表达式中查找数组元素的每个排列,mysql,sql,regex,select,Mysql,Sql,Regex,Select,有一个表,其中有一个标记列,该列有不同的标记,标记之间用a分隔,如下所示: | id | tag | | -- | ----- | | 1 | a,b,c | | 2 | b,a,h | | 3 | c,g,e | 如何选择标记列中包含例如a和b的每一行 我在MySQL中使用REGEX,问题是当标签的位置改变时,即:a、b和b、a,我无法获得所有带有所需标签的行 以下是获取a和b标记的查询: 我正在寻找一个与标记位置无关的正则表达式。我认为使用几个调用比正则表达式更容易: 挑选*

有一个表,其中有一个标记列,该列有不同的标记,标记之间用a分隔,如下所示:

| id | tag   |
| -- | ----- |
| 1  | a,b,c |
| 2  | b,a,h |
| 3  | c,g,e |

如何选择标记列中包含例如a和b的每一行

我在MySQL中使用REGEX,问题是当标签的位置改变时,即:a、b和b、a,我无法获得所有带有所需标签的行

以下是获取a和b标记的查询:


我正在寻找一个与标记位置无关的正则表达式。

我认为使用几个调用比正则表达式更容易:

挑选* 从样本表 在_集合'a'中查找_的位置,标记>0和 在_集合“b”中找到_,标记>0 请同时阅读

小提琴

为了解决另一个问题,您创建了一个字符串,使用所有可能的poattern[a,b,b,c,d,e,f]将其交给存储过程, 把那东西分开,然后做一个巨大的where子句

这基本上是文本concatag REGEXP',pattern1,+.*,pattern2,+'或标记REGEXP',pattern2,+.*,pqattern1,'

用字符串中的元素替换a和b


这需要一些编程,但比手写更好,所以可能会徒手拍打

不幸的是,这对我没有帮助,先生。搜索a和b只是一个例子,我必须根据这个标签对不同类别进行筛选,使用正则表达式对我来说是强制性的。考虑到这个解决方案,我必须对ab进行不同的可能性。例如,如果我有a、b、c、d、e、f。我想我必须做出2^6种不同的可能性才能得到想要的结果。我说的对吗?这是一个问题,如果你能像我一样找到一个模式,用于你想要的搜索。基本上,更复杂的是,你需要了解更多的正则表达式,所以看看这里,规范化表并进行常规的sql搜索,这也会很复杂,但是正则表达式对handle来说有点奇怪。我知道表的结构是一场噩梦,但我正在编辑一个在线的旧项目,我必须对它进行筛选。如果你能在规则上帮我我会很感激的这是aaa,aaa,没有b!
SELECT * FROM sample_table WHERE tag REGEXP 'b.*a'
CREATE TABLE table1 (
  `id` INTEGER,
  `tag` VARCHAR(5)
);

INSERT INTO table1
  (`id`, `tag`)
VALUES
  ('1', 'a,b,c'),
  ('2', 'b,a,h'),
  ('3', 'c,g,e');
SELECT * FROm table1 WHERE tag REGEXP 'a+.*,b+' OR tag REGEXP 'b+.*,a+'
id | tag -: | :---- 1 | a,b,c 2 | b,a,h
SELECT * FROm table1 WHERE tag REGEXP '(a+.*,b+|b+.*,a+)'
id | tag -: | :---- 1 | a,b,c 2 | b,a,h