在魔法中,聚会中会出现带有法术力符号的牌。 我想以{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}%")`
答案 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