在《魔法聚会》中,有些牌的费用中带有法力符号。 我想获取所有法力消耗中包含 {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}%")`
最佳答案
创建另一个表。假设您的 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
关于MYSQL查询匹配符号个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39553993/