
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) 忘了附上表结构了
CREATE TABLE IF NOT EXISTS redirect( id INTEGER PRIMARY KEY, list INTEGER[] DEFAULT'{}', comment VARCHAR(64) );
CREATE TABLE IF NOT EXISTS redirect( id INTEGER PRIMARY KEY, list INTEGER[] DEFAULT'{}', comment VARCHAR(64) ); 1 lvsshuttao 2020-04-22 16:38:13 +08:00 你那个 sql 语句应该不是个正常的 sql 语句吧 SELECT id FROM "redirect" WHERE 'list' IN (1000) LIMIT 1 OFFSET 0 |
2 lvsshuttao 2020-04-22 16:42:58 +08:00 上面那个 list 不需要 ' 号包裹 靠,v2ex 的回复不能编辑吗?怕了怕了,以后不敢随便在 V2EX 回复东西 |
3 imherer OP @lvsshuttao 不对。 往了说了 list 数据类型为 int array |
4 imherer OP @lvsshuttao 忘了附上表结构了,我 append 了表结构 |
5 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); |
6 jdlau 2020-04-22 18:41:21 +08:00 via Android 不能这样吧,用 xxx = any($1)试下 |
7 lvsshuttao 2020-04-22 18:42:40 +08:00 https://www.postgresql.org/docs/9.2/arrays.html 在官方文档里也可以看到很多示例的 |
8 imherer OP @lvsshuttao 谢谢 我去看看 |