psql CLI 中从任意大小写到小写的变量值转换

Variable value conversion from any case to smaller case in psql CLI

我正在创建一个脚本以通过 psql CLI 在 Postgres 中创建数据库用户,我面临的挑战是值从任何大小写到小写的转换正在发生或无法找到相同的解决方案。

\prompt 'Please input user name (must be lowercase): ' inputName
\set lowerVal lower(:inputName)    --This is not working

按照我的预期,lowerVal 变量应该将 inputValue 转换为小写值。 谷歌了但没有得到相同的解决方案。

psql 不能计算表达式,所以你的例子不能工作。您可以使用语句 \gset,评估查询并将结果存储到 psql 变量:

postgres=# \prompt 'Please input user name (must be lowercase): ' inputName
Please input user name (must be lowercase): AHOJ
postgres=# select lower(:'inputName') as "inputName" \gset 
postgres=# \echo :inputName
ahoj

psql 变量名只使用小字符可能更好。

另一种可能性是使用带反撇号的 shell 表达式求值:

postgres=# \set str AHOJ
postgres=# \set str `echo ":str" | tr "[:upper:]" "[:lower:]"`
postgres=# \echo :str
ahoj

此示例仅适用于类 Unix 系统。