【问题标题】:STRING_SPLIT in MySql- how to do it?MySql 中的 STRING_SPLIT - 怎么做?
【发布时间】:2018-11-22 10:52:36
【问题描述】:
SELECT er.pNumber, er.name, ep.fPosition, eo.res
FROM events_shot er, events_shot_final ep, events_shot_final_res eo, events_gear era
WHERE era.idShot=er.idShot AND ep.idPhoto=era.idPhoto AND eo.idShot=era.idShot
    AND era.idShot=42 AND eo.shotType='PRT'
    AND er.pNumber IN (
        SELECT *
        FROM STRING_SPLIT(eo.photosId,'-')
        )

shotsId 是一个类似于 12-1-8-7... 的字符串,其中 n 个 pNumber id 由 '-' 分隔

不幸的是,查询返回此错误:

错误代码:1064。您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在第 7 行的 '(eo.photosId,'-') )' 附近使用的语法

我无法更改数据库,如何更改我的查询?

如果您能提供任何帮助,我们将不胜感激。

【问题讨论】:

标签: mysql sql


【解决方案1】:

修复您的数据模型!不要在单个列中存储多个值。

学习正确的 SQL 语法! 从不FROM 子句中使用逗号。 始终使用正确、明确、标准 JOIN 语法。

话虽如此,您不需要拆分字符串。您可以使用字符串操作:

AND CONCAT('-', eo.photosId, '-') LIKE CONCAT('%-', er.pNumber, '-%')

但是,一旦您让这个查询工作,您就应该真正开始修复数据模型。

【讨论】:

    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 2012-07-16
    • 2017-01-05
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2023-03-18
    • 2012-08-25
    相关资源
    最近更新 更多