从knex查询中访问列值

时间:2018-01-28 14:38:46

标签: node.js sqlite knex.js

我想通过将函数应用于B列来更新A列的值。

是否有简单的表格解决方案:

string[] abc = new string[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };
string x = "1g";
string y = "2b";

string strx = Regex.Match(x, @"\d+").Value;
string stra = Regex.Match(x, @"[a-z]+").Value;
int intx = Int32.Parse(strx);

string stry = Regex.Match(y, @"\d+").Value;
string strb = Regex.Match(x, @"[a-z]+").Value;
int inty = Int32.Parse(stry);

Console.WriteLine(strx);
Console.WriteLine(stra);
Console.WriteLine("----");

int len = inty - intx + 1;
List<string> xycombinations = new List<string>();
string[] ycombinations = new string[] { };
if (len >= 0)
{
    int starting = 0;
    while (abc[starting] != stra)
    {
        starting = starting + 1;
    }
    while (starting < abc.Length)
    {
        xycombinations.Add(intx.ToString() + abc[starting]);
        starting = starting + 1;
    }
    for (int i = 0; i < xycombinations.Count; i++)
    {
        Console.WriteLine(xycombinations[i]);
    }
}

Console.ReadLine();

1 个答案:

答案 0 :(得分:2)

是的,有一种方法可以在Knex中执行此操作。

对于在Knex中没有明确支持的SQL函数,您可以使用knex.raw(SQLstring, parmArray)封装SQL代码段或knex.schema.raw(...)来生成整个SQL语句。并且您使用单个问号?进行值替换,并使用双重问号??进行字段标识符替换。 (see link

所以SQL:UPDATE table SET colA = func(colB)

...可以通过包含SQL片段来生成:(你很接近)

knex('table')
    .update({
       colA: knex.raw( 'func(??)', ['colB'] ) 
     })

...或者作为完整的原始SQL:

knex.schema.raw( 'UPDATE table SET ?? = func(??)', ['colA', 'colB'] )

干杯,加里。