MYSQL查询匹配符号数

时间:2016-09-18 04:06:35

标签: mysql

在魔法中,聚会中会出现带有法术力符号的牌。 我想以{U} {U}获取所有卡牌的法术力费用,这意味着它之前的任何数字或者任何非{U}字符之后的质量,但它无法获取超过两个{U} {U的牌他们的卡费用。

CARD_NAME       | CARD_COST |
-----------------------------------
Avatar of Will  |    {6}{U}{U}
-------------------------
Aven Smokeweaver|    {2}{U}{U}
-----------------------------
Ayesha Tanaka   |    {W}{W}{U}{U} 
-------------------------------------
Azami           |    {2}{U}{U}{U}

我的结果将是:

Avatar of Will {6}{U}{U} -ok
Aven Smokeweaver {2}{U}{U} -ok
Ayesha Tanaka {W}{W}{U}{U} - ok
Azami  {2}{U}{U}{U} - exclude not ok 

有没有一种聪明的方法来获取这些结果?

Select CARD_NAME from Cards `WHERE (`CARD_COST` LIKE "%{U}{U}%")`

1 个答案:

答案 0 :(得分:1)

改为创建另一个表。假设您的CARD_NAME是Cards中的主键:

CREATE TABLE Cards_Costs (
    CARD_NAME VARCHAR(255),
    COST_NAME CHAR(1),
    COST_COUNT INT
);
CREATE UNIQUE INDEX namecost ON Cards_Costs (CARD_NAME, COST_NAME);

那么你可以直接查询这些值。

如果维护计数不方便,您还可以按成本计算创建一行:

CREATE TABLE Cards_Costs (
    CARD_NAME VARCHAR(255),
    COST_NAME CHAR(1)
);
CREATE INDEX namecost ON Cards_Costs (CARD_NAME, COST_NAME);

然后你可以像这样查询:

SELECT COUNT(*) FROM Cards_Costs WHERE CARD_NAME=:s AND COST_NAME=:s