解析一个简单的更新语句

时间:2017-05-29 12:18:23

标签: sql

我想知道是否有人可以帮我解决这个问题。

我正在尝试解析更新语句,如下所示。

Update tableA set 
column1 = NULL
where column2 is NULL

将上面的sql语句作为输入。 我需要以下输出。

  1. 到达时我需要表名。在这种情况下:TableA
  2. 我需要更新的列。在这种情况下Column1
  3. 我需要更新列的值。在这种情况下NULL
  4. 我需要整体的情况。在这种情况下,column2是NULL
  5. 有人能帮助我吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您的目标是解析语句但没有实现解析器,那么我会尝试查找现有的库。有一个解析SQL的Javascript库:node-sqlparser

'use strict';
// npm install node-sqlparser

let parser = require('node-sqlparser');
let tree =parser.parse(`Update tableA set 
column1 = NULL
where column2 is NULL`);

console.info(JSON.stringify(tree, null, 2));

结果:

{
  "type": "update",
  "db": "",
  "table": "tableA",
  "set": [
    {
      "column": "column1",
      "value": {
        "type": "null",
        "value": null
      }
    }
  ],
  "where": {
    "type": "binary_expr",
    "operator": "IS",
    "left": {
      "type": "column_ref",
      "table": "",
      "column": "column2"
    },
    "right": {
      "type": "null",
      "value": null
    }
  },
  "params": []
}