在MySQL中,当另一个值='7 - 31'时,我希望能够搜索'31 - 7'.在MySQL中,我将使用什么语法来分解字符串?在PHP中,我可能会使用explode(' - ',$string)并将它们放在一起.有没有办法在MySQL中做到这一点?

背景:我正在研究运动成绩,并想try 成绩相同(也在同一日期)的比赛——列出的每支球队的成绩与对手的数据库记录进行反向比较.

理想的MySQL调用是:

Where opponent1.date  = opponent2.date
  AND opponent1.score = opponent2.score

(opponent2.score必须是opponent1.score).

推荐答案

MYSQL没有内置类似explode()的功能.但是,您可以轻松地将类似的函数添加到数据库中,然后从php查询中使用它.该函数将如下所示:

CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),
       CHAR_LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),
       delim, '');

用法:

SELECT SPLIT_STRING('apple, pear, melon', ',', 1)

上面的例子将返回apple.

Mysql相关问答推荐

如何在产品查询中插入GROUP_CONCAT?

MySQL多次联接同一个表使计数变得奇怪

如何将左联接的小计/总计行中的所有列作废

插入时发生日期时间字段溢出错误

从连接表中try 按唯一ID计算行数 MySQL

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

如何进行查询以在两个不同的列中搜索两个不同的数据字符串?

条件触发mysql

MySQL,递归 CTE.它如何以这种句法形式工作?

为生日创建 MySQL 索引

优化解析 5000 万行 MySQL 表的请求

如何根据 R 中的价格范围将数据从一列复制到新列?

MySQL 8 - MBRContains 不使用空间索引

mySQL 中的主数据库和 IF 错误?

有没有更好的方法在无限滚动的网页上呈现获取的提要数据?

如何在mysql中连接整数(整数和整数)和varchar(nvarchar和varchar)等数据类型?

在连接条件上使用 IS NULL 或 IS NOT NULL - 理论问题

为什么 MySQL 自动增量会在插入失败时增加?

MySQL更新查询与左连接和分组依据

如何将本地托管的 MySQL 数据库与 docker 容器连接