當我嘗試使用以下更新查詢時...
UPDATE
product_table
SET
product_name = $1,
price = $2,
delivery_interval = NULLIF ($3, '')
WHERE
id = $4;
...出現以下...
error: column "delivery_interval" is of type integer but expression is of type text
delivery_interval = NULL而不是NULLIF ($3, '')似乎有效。為什么?
uj5u.com熱心網友回復:
盡我所知,你需要這個:
delivery_interval = (NULLIF($3::text, '')::integer)
首先,您需要將引數轉換為文本,因此 NULLIF 將 like 與 like 進行比較,然后將整個運算式轉換為整數,以匹配列型別。
uj5u.com熱心網友回復:
從檔案:
結果與第一個引數的型別相同——但有一個微妙之處。實際回傳的是隱含
=運算子的第一個引數,在某些情況下,它會被提升以匹配第二個引數的型別。例如,NULLIF(1, 2.2)yieldsnumeric,因為沒有integer = numeric運算子,只有numeric = numeric.
因此,由于隱含原因,您的$3istext或 is 隱式轉換為。這使得結果一。text= nullif()nullif()text
您可以嘗試顯式轉換nullif().
...
nullif($3, '')::integer
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361561.html
標籤:PostgreSQL的
上一篇:基于關系表資料的行級安全
