[英]Can you retrieve a list of updated rows when running an UPDATE query using the Go sqlx package with Postgres?
[英]Query BYTEA in Postgres using sqlx
我在 Postgres 數據庫中有下表:
CREATE TABLE resources_index (
hash varchar NOT NULL,
"name" varchar NOT NULL,
viewentry_id varchar NOT NULL,
value bytea NULL
);
我想使用sqlx
執行以下准備好的語句:
SELECT
t0.name,
t0.value
FROM
(
SELECT
name,
value
FROM
resources_index
WHERE
hash = $1
AND value :: BYTEA LIKE $2 :: BYTEA
) AS t0
LIMIT
$3
問題出現在以下行: AND value :: BYTEA LIKE $2 :: BYTEA
Postgres DB 錯誤響應為: ERROR: operator does not exist: character varying = bytea
查詢執行如下:
let mut q = sqlx::query_as::<sqlx::Postgres, IndexRow>(&query);
for v in values.iter() {
log::debug!("bind value {}", v);
q = q.bind(v.as_bytes());
}
q.bind(limit).fetch_all(pool).await
對我來說,雖然它應該是BYTEA
但看起來v
被轉換為VARCHAR
。
你知道這是一個錯誤還是我做錯了?
使用內置的解碼功能解決了它。
SELECT
t0.name,
t0.value
FROM
(
SELECT
name,
value
FROM
resources_index
WHERE
hash = $1
AND value LIKE decode($2, 'escape')
) AS t0
LIMIT
$3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.