0

我有以下查询:

SELECT 
        *
    FROM
        `Magic The Gathering`
    WHERE
        `set` =  'Magic 2013'
    ORDER BY
        (CASE
            WHEN `cost` LIKE '%B%' THEN 1
            WHEN `cost` LIKE '%R%' THEN 2
            WHEN `cost` LIKE '%G%' THEN 3
            WHEN `cost` LIKE '%W%' THEN 4
            WHEN `cost` LIKE '%U%' THEN 5
            WHEN `cost` LIKE '%B%U%' THEN 6
            ELSE 7
        END),
        FIELD (`rarity`, 'Mythic', 'Rare', 'Uncommon', 'Common', 'Land') ASC,
        (CASE
            WHEN `type` LIKE '%Planeswalker%' THEN 1
            WHEN `type` LIKE '%Creature%' THEN 2
            WHEN `type` LIKE '%Instant%' THEN 3
            WHEN `type` LIKE '%Sorcery%' THEN 4
            WHEN `type` LIKE '%Enchantment%' THEN 5
            WHEN `type` LIKE '%Artifact%' THEN 6
            WHEN `type` LIKE '%Land%' THEN 7
        END)
    LIMIT
        500

如果你看线...

WHEN `cost` LIKE '%B%U%' THEN 6

我怎样才能使它支持两者

WHEN `cost` LIKE '%B%U%' THEN 6

WHEN `cost` LIKE '%U%B%' THEN 6

注意 U 现在在 B 前面。或者甚至是一个变体,例如......

WHEN `cost` LIKE '%B%U%G%R%' THEN 6

基本上,如果这些字符中的任何一个无论顺序如何都在字符串中,它应该可以工作。我怎样才能做到这一点?

4

1 回答 1

1

使用单独的喜欢执行此操作:

when cost like '%b%' and cost like '%u%' then ...

您还可以使用正则表达式,特别是在模式变得更复杂的情况下:

when cost regexp '.*[bu].*' then ...
于 2013-08-17T21:56:09.087 回答