使用mysql和regex从描述中提取颜色

tyu7yeag  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(281)

请看下面的mysql fiddle:
http://sqlfiddle.com/#!9/e84a6a/3/0型
我已经包括了两个示例表,第一个是颜色列表,第二个是描述列表。
我想将颜色提取到一个新的单独的列中,在这个列中,颜色同时存在于tbl\u颜色和tbl\u示例的描述中。
我怀疑我需要实现regex和单词边界(即,只有当它们在“整个单词”上匹配时才提取颜色,即被空格、字符串的结束/开始、括号等包围)。
我无法理解的是如何将join和regex与单词边界结合起来。
这在mysql中是可能的吗?

6psbrbz9

6psbrbz91#

一旦您在mysql中解释了\b的bizzare符号,这实际上非常简单:

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

fhg3lkii2#

这将达到以下目的:

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, '[[:>:]]');

相关问题