当前位置: 首页 > 面试题库 >

等效于explode()以在MySQL中使用字符串

徐晔
2023-03-14
问题内容

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

背景:我正在研究体育比分,并且想尝试分数相同(并且在同一日期)的比赛-每个球队列出的分数与对手的数据库记录相比是倒数的。

理想的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),
       LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),
       delim, '');

用法:

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

上面的示例将返回apple。我认为在MySQL中返回数组将是不可能的,因此您必须指定要在中显式返回的事件pos。让我知道您是否成功使用它。



 类似资料:
  • 问题内容: 我需要进行查询并与一年中的所有日子一起加入,但是在我的数据库中没有日历表。 谷歌搜索后,我在PostgreSQL中找到了。MySQL有类似的东西吗? 我的实际表有这样的东西: 但是我的查询必须返回: 问题答案: 这就是我的方法。它创建了从 2011-01-01 到 2011-12-31 的日期范围: 唯一的要求是 any_table中 的行 数 应大于或等于所需范围的大小(在此示例中,

  • 问题内容: 如果我正在从文本中扫描 //我想将行中的下一个char与 // 像这样: 我知道那不存在,但是在这种情况下可以使用任何类似的东西吗? 问题答案: 您的代码将类似于… 请注意,在调用之后,实际上已获取了该值,因此,如果您想进一步使用它,最好保留该变量,例如:

  • 问题内容: 快速提问。是否有等效于@的Java字符串: 例如,我可以使用C#进行处理,并使其在处理时忽略转义字符,而不必这样做。是否有Java等效项? 嗯:stackoverflow正在向我逃脱..大声笑。第二个示例应为: c :(双反斜杠)文件夹(双反斜杠)aFile 问题答案: 没有。转义/外部化字符串是您唯一的选择。

  • 问题内容: String[] letters = {“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “L”}; 为什么是 Fk呀! 输入AL字母之一绝对不会发生? 问题答案: 字符串是对象。所述通过引用,而不是由它们的内部值进行比较的对象。 有两种解决方案: 使用method来比较两个对象的值。 使用代替。这是原始的,因此可以使用。

  • 问题内容: 这个问题已经在这里有了答案 : MySQL中的ROW_NUMBER() (24个答案) 7年前关闭。 我正在尝试将在Microsoft SQL Server中创建的SQL脚本转换为可以通过链接服务器运行的SQL脚本,该脚本可以在SQL Procedures(我正在使用的脚本)中使用 创建一个不依赖于自动增量的主键,当我尝试将代码保存为过程时,出现此错误 错误1064(42000):您的

  • 问题内容: 是否有任何库可以将特殊字符替换为ASCII等效项,例如: 至: 我当然可以创建地图: 并使用一些替换功能。但是我不想将所有等效项硬编码到我的程序中,如果已经有一些功能可以做到这一点。 问题答案: