如何将 bash 数组转换为 PSQL 数组

How to convert bash array to PSQL array

我有一个 bash 脚本和一个数组变量。 数组初始化为...

ARRVAR=( 0001 0002 0003 )

现在,我想在PSQL中使用数组进行查询。 这是我的查询...

QUERY1="SELECT * FROM table WHERE column1 && '$psql_array'"

column1 是 varchar[] 类型,它与另一个数组(psql_array)进行比较,这应该是 bash 数组变量转换为 PSQL数组。

是否有任何可能或简单的方法将 bash 数组转换为 PSQL 数组?

# printf to a variable (psql_array) replacing single quotes by two single quotes
printf -v psql_array "'%s'," "${ARRVAR[@]//\'/\'\'}"
# remove the trailing ,
psql_array=${psql_array%,}

# check
echo "($psql_array)"


# or to have a postgresql varchar[]
# escape double quote between double quotes
printf -v psql_array "\"%s\"," "${ARRVAR[@]//\"/\\"}"
psql_array=${psql_array%,}
echo "{$psql_array}"

# or easier
printf -v psql_array "'%s'::varchar," "${ARRVAR[@]//\'/\'\'}"
echo "ARRAY[${psql_array%,}]"