如何从DML语句中获取column_name和table_name?

时间:2016-02-10 13:47:51

标签: javascript java sql node.js algorithm

我正在构建一个模拟数据库操作的算法。

我有一个问题,我如何从DML语句中获取表名和列名?

即:

 string = "SELECT id,name FROM USER_TBL"
 string TABLE_NAME = getTableName(string); //this will return "USER_TBL"
 array COLUMN_NAME = getColumnNames(string); //this will return ["id","name"]

如果我认为这些是字符串操作,我如何设计算法来获取表名称&列名?

目前我使用以下逻辑

function getTableName(iString){
   //find string between "FROM " to next " "(space) and return it 
}

function getColumnNames(string){
   //get string between "SELECT " and " FROM" and split string based on "," (comma) and return it
}

我想知道有没有可用的算法(供参考)?我需要处理的是什么和所有情况?

1 个答案:

答案 0 :(得分:0)

我不知道算法,但我想到的一些事情: 表名 - 表名可以有别名,但你的逻辑应该没问题 - 可以使用数据库名称作为前缀(dbname.tblname) - >所以你可能需要在返回字符串之前寻找点 - Tablename可以是派生表 - >括号中的select语句。在这种情况下,没有一个简单的表名派生

列名 - 列名可以有别名,不知道你想如何处理它。 - 计算,条件(情况......) - >这不仅仅是列名,而是组合或计算的值。在这种情况下,没有要检索的真实列名 - 您还可以在结果集中为单个列选择语句

总的来说,如果sql查询没有复杂性,你的方法就有效,如果是,你的逻辑可能不会返回你想要的东西。

其他语句如UPDATE和INSERT怎么样?这也是你要解析的东西吗?