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 系统。
我正在创建一个脚本以通过 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 系统。