亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PSQL 運算符在 postgresql 中不存在

PSQL 運算符在 postgresql 中不存在

Go
慕蓋茨4494581 2022-08-24 16:07:39
這是我的原始查詢,它適用于針對同一數據庫的pg_admin:WITH myconstants (nb_pieces,nb_room,is_fiber) as (        values (0,0,true) )SELECT     pbuy.name, seller.name as seller_name, fiche.fiberFROM     on_plan_buy pbuyINNER JOIN      card_fiche fiche      ON pbuy.uuid = fiche.ad_uuidINNER JOIN     on_plan_seller seller     ON pbuy.seller_id = seller.idINNER JOIN        myconstants conste        ON trueWHERE pbuy.code_insee IN ('92108','75018')        AND pbuy.price <= 9999999 AND pbuy.price >= 0        AND CASE WHEN conste.is_fiber = false THEN true ELSE fiche.fiber = true ENDLIMIT 100;但是當我在golang中這樣做時:query = `WITH myconstants (nb_pieces,nb_room,is_fiber) as (    values ($3,$4,$5) )SELECT     pbuy.nameFROM     ` + tableOnPlan + ` pbuyINNER JOIN    card_fiche fiche    ON pbuy.uuid = fiche.ad_uuidINNER JOIN    myconstants conste    ON trueWHERE pbuy.code_insee IN ('` + strings.Join(gsm.CodeInsee, "','") + `')    AND pbuy.price <= $1 AND pbuy.price >= $2    AND CASE WHEN conste.is_fiber = false THEN true ELSE fiche.fiber = true ENDLIMIT 100;`//AND CASE WHEN conste.nb_pieces = 0 THEN pbuy.piece > 0 ELSE pbuy.piece = conste.nb_pieces END//AND CASE WHEN conste.nb_room = 0 THEN pbuy.chambre > 0 ELSE pbuy.chambre = conste.nb_room END//AND CASE WHEN conste.is_fiber = false THEN true ELSE fiche.fiber = true ENDfmt.Println(query)err = db.Select(&response.Offers, query, gsm.PriceMax, gsm.PriceMin, gsm.NbRoom, gsm.NbChamber, gsm.Fiber)
查看完整描述

1 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

我猜PostgreSQL不知道CTE中的列是什么類型。當你在這樣說的時候:pg_admin


WITH myconstants (nb_pieces,nb_room,is_fiber) as (

    values (0,0,true)

)

每個人都知道這是一個布爾值,所以一切都有效。但是,當您在 Go 中使用它時:true


WITH myconstants (nb_pieces,nb_room,is_fiber) as (

    values ($3,$4,$5)

)

驅動程序可能不知道要使用什么類型,因此它具有類型文本,并最終嘗試與 進行比較。text$5conste.is_fiberconste.is_fiber = falsetextboolean


你應該能夠通過一些投射來解決這個問題:


WITH myconstants (nb_pieces, nb_room, is_fiber) as (

    values ($3::int, $4::int, $5::boolean)

)


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號