如何从列表中选择属性中没有属性部分的项目

时间:2016-04-20 11:58:28

标签: mysql regex

我在MySQL数据库中有一个表,我试图从中输出对象。我有一个单词列表,并且为了从表中输出一个对象,对象中没有任何单词"" Name"属性可以在列表中。

表示例(MyTable):

java

列表示例:

ID    Name           Atrib_1    Atrib_2    Atrib_3
1     Hello Kitty    X          10         N
2     Green Chimp    Y          280        Y
3     Chairs Blue    X          14         N
4     Seven Teens    X          342        N
5     Chair Bravo    V          8          Y

我只想输出name属性中没有单词与列表中的单词匹配的对象 - 在上面的例子中,唯一的对象输出应该是名为" Chairs Blue"的对象。我尝试过使用:

Kitty, Green, Seven, Chair, Bravo

这个问题是我必须手动添加一个" NOT LIKE"对于列表中的每个单词。当它到达"主席","椅子蓝"被过滤掉了,因为字符串是部分匹配。

2 个答案:

答案 0 :(得分:1)

SELECT  *
FROM    mytable m
LEFT JOIN
        (
        SELECT  'kitty' word
        UNION ALL
        SELECT  'green'
        UNION ALL
        SELECT  'seven'
        ) w
ON      m.name RLIKE CONCAT('\\b', w.word, '\\b')
WHERE   w.word IS NULL

答案 1 :(得分:1)

systemProp.http.nonProxyHosts=x.12.11.18

有趣的令牌是单词边界。 SELECT ... FROM MyTable WHERE Name NOT REGEXP '[[:<:]](Kitty|Green|Seven|Chair|Bravo)[[:>:]]'; 表示“或”。