Golang Go语言中 xorm 是否不支持 MySQL 的 FIND_IN_SET 查询?
Golang Go语言中 xorm 是否不支持 MySQL 的 FIND_IN_SET 查询?
用的是 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 的支持吗?
更多关于Golang Go语言中 xorm 是否不支持 MySQL 的 FIND_IN_SET 查询?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
建议你不要用 orm 对个人发展和公司都不好
更多关于Golang Go语言中 xorm 是否不支持 MySQL 的 FIND_IN_SET 查询?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
可以了,(tag,’?’) -> (tag,?)就行了,我也想着是不是这里的引号问题,也测试过。。谢谢
怎么讲
在Golang的Go语言中,xorm库作为一个强大的ORM(对象关系映射)工具,广泛用于与多种数据库进行交互,包括MySQL。关于xorm是否支持MySQL的FIND_IN_SET
查询,这里有一些关键点需要说明。
xorm本身并不直接封装所有MySQL的特定函数,如FIND_IN_SET
,因为它旨在提供一个跨数据库平台的通用接口。然而,这并不意味着你不能在xorm中使用FIND_IN_SET
。你可以通过xorm的Raw
方法或Exec
方法直接执行原生SQL查询,包括那些包含FIND_IN_SET
的查询。
例如,如果你需要在查询中使用FIND_IN_SET
,可以这样做:
results, err := engine.Raw("SELECT * FROM your_table WHERE FIND_IN_SET(?, your_column)", yourValue).QueryRows()
if err != nil {
// 处理错误
}
for _, row := range results {
// 处理结果
}
在这个例子中,engine
是你的xorm引擎实例,your_table
和your_column
分别替换为你的表名和列名,yourValue
是你要查找的值。
总之,虽然xorm没有直接封装FIND_IN_SET
函数,但你仍然可以通过执行原生SQL查询来使用它。这种方法提供了灵活性,让你能够利用MySQL的特定功能,同时仍然享受xorm提供的ORM便利。