V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
hbolive
V2EX  ›  Go 编程语言

请问 xorm 不支持 MySQL 的 FIND_IN_SET 查询吗?

  •  
  •   hbolive · 2020-12-25 11:38:15 +08:00 · 1688 次点击
    这是一个创建于 1460 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用的是 github.com/xormplus/xorm
    想实现 MySQL 的以下查询:
    select * from tag where FIND_IN_SET(tag, 'a,b,c,d')

    err := engine.Select("tag,score").Where("FIND_IN_SET(tag,'?')", tagstr).Find(&tags)
    ShowSQL 打印出 SQL 如下:
    [SQL] SELECT tag,score FROM `t_tag` WHERE (FIND_IN_SET(tag,'?')) [a,b,d]

    错误信息:
    sql: expected 0 arguments, got 1

    网上搜索,也看了官方手册没有 FIND_IN_SET 相关资料(不能换成 IN 查询)。

    按手册又换成:engine.Sql("select * from tag where id =?", 16).Find(&tags),提示 Sql 方法不存在。。

    刚接触 go 语言,也没法深入排查,请问是 xorm 就没有实现对 FIND_IN_SET 的支持吗?
    4 条回复    2020-12-25 15:27:27 +08:00
    Thetruechar
        1
    Thetruechar  
       2020-12-25 13:16:25 +08:00 via Android   ❤️ 1
    建议你不要用 orm 对个人发展和公司都不好
    kaolajia123
        2
    kaolajia123  
       2020-12-25 13:42:46 +08:00
    .Select("tag,score").Where("FIND_IN_SET(tag,?)", "1,2,3").Find(&rs)
    [xorm] [info] 2020/12/25 13:41:08.622700 [SQL] SELECT tag,score FROM `m_tag` WHERE (FIND_IN_SET(tag,?)) [1,2,3] - 1.623635ms
    [{0 2 5}] <nil>
    我试了下没啥问题啊
    hbolive
        3
    hbolive  
    OP
       2020-12-25 14:10:39 +08:00
    @kaolajia123 可以了,(tag,'?') -> (tag,?)就行了,我也想着是不是这里的引号问题,也测试过。。谢谢
    yph007595
        4
    yph007595  
       2020-12-25 15:27:27 +08:00
    @Thetruechar 怎么讲
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3143 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:39 · PVG 20:39 · LAX 04:39 · JFK 07:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.