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

问一个 postgresql 传参问题

  •  
  •   imherer · 2020-04-22 14:45:25 +08:00 · 1907 次点击
    这是一个创建于 1711 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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) 
    
    第 1 条附言  ·  2020-04-22 17:48:17 +08:00

    忘了附上表结构了

    CREATE TABLE IF NOT EXISTS redirect( id INTEGER PRIMARY KEY, list INTEGER[] DEFAULT'{}', comment VARCHAR(64) );

    第 2 条附言  ·  2020-04-22 17:48:50 +08:00
    CREATE TABLE IF NOT EXISTS redirect(
        id INTEGER PRIMARY KEY, 
        list  INTEGER[] DEFAULT'{}',
        comment VARCHAR(64)
    );
    
    9 条回复    2020-04-23 12:20:19 +08:00
    lvsshuttao
        1
    lvsshuttao  
       2020-04-22 16:38:13 +08:00
    你那个 sql 语句应该不是个正常的 sql 语句吧

    SELECT id FROM "redirect" WHERE 'list' IN (1000) LIMIT 1 OFFSET 0
    lvsshuttao
        2
    lvsshuttao  
       2020-04-22 16:42:58 +08:00
    上面那个 list 不需要 ' 号包裹
    靠,v2ex 的回复不能编辑吗?怕了怕了,以后不敢随便在 V2EX 回复东西
    imherer
        3
    imherer  
    OP
       2020-04-22 17:47:26 +08:00
    @lvsshuttao 不对。 往了说了 list 数据类型为 int array
    imherer
        4
    imherer  
    OP
       2020-04-22 17:49:14 +08:00
    @lvsshuttao 忘了附上表结构了,我 append 了表结构
    lvsshuttao
        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);
    jdlau
        6
    jdlau  
       2020-04-22 18:41:21 +08:00 via Android
    不能这样吧,用 xxx = any($1)试下
    lvsshuttao
        7
    lvsshuttao  
       2020-04-22 18:42:40 +08:00
    https://www.postgresql.org/docs/9.2/arrays.html 在官方文档里也可以看到很多示例的
    imherer
        8
    imherer  
    OP
       2020-04-23 12:18:36 +08:00
    @lvsshuttao 谢谢 我去看看
    imherer
        9
    imherer  
    OP
       2020-04-23 12:20:19 +08:00
    @jdlau 我上面的 sql 执行没问题呀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1182 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:11 · PVG 02:11 · LAX 10:11 · JFK 13:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.