簡體   English   中英

如何從DML語句獲取column_name和table_name?

[英]How to get column_name and table_name from DML statement?

我正在建立一種模擬數據庫操作的算法。

我有一個問題,如何從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
}

我想知道是否有任何算法可用於此(供參考)? 除這些以外,我還需要處理什么情況?

我不知道算法,但是我想到了一些事情:表名-表名可以有別名,但是邏輯上應該可以-您可以在數據庫名(dbname.tblname)之前加上前綴->這樣在返回字符串之前,您可能需要查找點-Tablename可以是派生表->放在方括號中的select語句。 在這種情況下,表名派生實際上並不簡單

列名-列名可以有別名,不確定要如何處理。 -關於計算,條件(何時…)->不僅是列名,而且是組合值或計算值。 在這種情況下,沒有要檢索的實際列名-您還可以在結果集中為單個列選擇語句

因此,總的來說,如果sql查詢中沒有復雜性,則您的方法有效,如果是,則您的邏輯可能不會返回您想要的結果。

那么其他語句(例如UPDATE和INSERT)呢? 您還想解析嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM