MYSQL查询匹配符号个数

标签 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}%")`

最佳答案

创建另一个表。假设您的 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/

相关文章:

php - 文本字段中的符号与字段数据的显示有关

mysql - 从两个表中获取结果 from id 和 following id

php - 如何使用 for 循环将数据从 csv 表插入到 sql 数据库?

php - 如何使用 PHP 将变量列导出到 CSV 文件?

php - 每次在 Laravel 中更改状态时发送 Slack 通知

php - 摆脱 php 或 mysql 中的多个空格

php - 如何在codeigniter中获取单行中的所有行数据

mysql - AVG 返回 null 但不应返回 null

php - 使用 HTML 表单通过 PHP 发送 MySQL 表

mysql - 使得两个sql字段在改变之前需要互相更新