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

2020-12-25 11:38:15 +08:00
 hbolive
用的是 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 的支持吗?
1450 次点击
所在节点    Go 编程语言
4 条回复
Thetruechar
2020-12-25 13:16:25 +08:00
建议你不要用 orm 对个人发展和公司都不好
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
2020-12-25 14:10:39 +08:00
@kaolajia123 可以了,(tag,'?') -> (tag,?)就行了,我也想着是不是这里的引号问题,也测试过。。谢谢
yph007595
2020-12-25 15:27:27 +08:00
@Thetruechar 怎么讲

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX