【发布时间】:2016-12-02 19:44:51
【问题描述】:
我有分配到变量选择语句的典型问题, 我已经尝试了很多选项,但它们都不起作用..
我有替换上部列名的功能(列名)。
Upper=(Column1 Column2) # Array variable
upper_function()
{
query="$1"
for ((i=0;i<${#Upper[@]};i++))
do
query=$(echo "$query" | sed -e "s/\b"${Upper[$i]}"\b/UPPER(${NAME[$i]})/g")
done
SQLQUERY="$query"
}
下面我有SQL语句:
SQLQUERY="Select column1,column2 from table"
现在,我想将 column1 和 column2 更改为
upper(column1) and upper(column2).
所以我运行函数:
upper_function "$SQLQUERY"
上面的解决方案工作正常,但情况是,而不是
SQLQUERY="$query"
我想让我的函数更加自动化,并将 Select 语句的名称分配给变量,例如如下:
$2="$query"
然后运行函数:
upper_function "$SQLQUERY" "SQLQUERY"
但它不起作用,我不知道为什么,如何正确分配该变量?谢谢
【问题讨论】:
-
Upper=(Column1,Column2)只有一个元素,Column,Column2——如果你想让它们成为两个独立的元素,你需要在它们之间留一个空格:Upper=( Column1 Column2 ) -
Charles,我是无意中这样做的(复制和粘贴错误)。我编辑了我的问题,数组变量现在可以正常工作。仍然是变量分配的问题
-
...现在,您只是希望能够传递变量的 name 以用作源和目标吗?这很容易。
-
是的,这就是我想要做的就是运行我的函数作为 upper_function "$SQLQUERY" "SQLQUERY" ,所以 2 个变量...
-
是的,你是对的,我不会在不解释编辑内容的情况下编辑我的问题