使用MySQL和Regex从描述中提取颜色

时间:2018-10-04 13:54:40

标签: mysql regex

请参见以下MySQL小提琴:

http://sqlfiddle.com/#!9/e84a6a/3/0

我提供了两个示例表,第一个是颜色列表,第二个是描述列表。

我想将颜色提取到新的单独的列中,其中颜色同时存在于tbl_colours和tbl_example的描述中。

我怀疑我需要实现正则表达式和单词边界(即,仅当它们在“整个单词”上匹配时才提取颜色,即被空白,字符串的结尾/开始,方括号等包围。

我无法理解的是如何结合单词边界的连接和正则表达式。

在MySQL中这可能吗?

2 个答案:

答案 0 :(得分:1)

一旦您在MySQL中使用\ b的怪异符号,这实际上就很容易了:

SELECT 
    d.Code, d.Description, c.colour
FROM
    tbl_example d
        LEFT JOIN
    tbl_colours c ON UPPER(d.Description) REGEXP CONCAT('[[:<:]]', colour, '[[:>:]]')

答案 1 :(得分:0)

这可以解决问题:

SELECT d.Code, d.Description, c.colour
FROM tbl_example d
JOIN (SELECT DISTINCT colour FROM tbl_colours) c ON d.Description REGEXP CONCAT('[[:<:]]',colour, '[[:>:]]');