MySql中的STRING_SPLIT,该怎么做?

时间:2018-11-22 10:52:36

标签: mysql sql

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,'-'))'附近使用的语法

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

您能提供的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

但是,一旦使该查询生效,您就应该真正着手修复数据模型。