问一个 postgresql 传参问题

2020-04-22 14:45:25 +08:00
 imherer

postgresql 使用的库是 github.com/lib/pq 现有如下 sql 语句:

`SELECT id FROM redirect WHERE list && array[1001] LIMIT 1

其中 1001 是想作为条件传进来的,如下这样写报语法错误

query := `SELECT id FROM redirect WHERE list && array[$1] LIMIT 1`
var id sql.NullInt64
err := postgres.QueryRow(query, 1001).Scan(&id)
log.Println("err", err)   // err pq: operator does not exist: integer[] && text[]
log.Println(id.Int64) 
1908 次点击
所在节点    Go 编程语言
9 条回复
lvsshuttao
2020-04-22 16:38:13 +08:00
你那个 sql 语句应该不是个正常的 sql 语句吧

SELECT id FROM "redirect" WHERE 'list' IN (1000) LIMIT 1 OFFSET 0
lvsshuttao
2020-04-22 16:42:58 +08:00
上面那个 list 不需要 ' 号包裹
靠,v2ex 的回复不能编辑吗?怕了怕了,以后不敢随便在 V2EX 回复东西
imherer
2020-04-22 17:47:26 +08:00
@lvsshuttao 不对。 往了说了 list 数据类型为 int array
imherer
2020-04-22 17:49:14 +08:00
@lvsshuttao 忘了附上表结构了,我 append 了表结构
lvsshuttao
2020-04-22 18:40:26 +08:00
在这里 https://www.postgresqltutorial.com/postgresql-array/ 看到一个示例

SELECT name, phones FROM contacts WHERE '(408)-589-5555' = ANY (phones);
jdlau
2020-04-22 18:41:21 +08:00
不能这样吧,用 xxx = any($1)试下
lvsshuttao
2020-04-22 18:42:40 +08:00
https://www.postgresql.org/docs/9.2/arrays.html 在官方文档里也可以看到很多示例的
imherer
2020-04-23 12:18:36 +08:00
@lvsshuttao 谢谢 我去看看
imherer
2020-04-23 12:20:19 +08:00
@jdlau 我上面的 sql 执行没问题呀

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

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

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

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

© 2021 V2EX