2012-12-06 79 views
0

我想問我怎麼能提取列名從SQL查詢&它們各自的值,而不執行statment。獲取SQL列名和價值觀

例如:

select * from table where fieldname = 'fieldvalue' 

我想從查詢中提取 「字段名」 和 「fieldValue方法」。

Insert into table (field,field2,field3) 
values ('fieldvalue','field2avlue','field3'svalue') 

我想從查詢中提取的 「場」, 「字段2」 和 「fieldValue方法」, 「field2avlue」, 「field3'svalue」。

+1

DBMS名稱和版本? –

+1

「提取」是什麼意思?解析文本並找到每種可能類型的sql文本的列名和列值? – Steve

+0

不管DBMS – KhanZeeshan

回答

0

我正在使用@Sandra Walters的建議ie:解決該問題的理想方法是清理字段值,然後將它們包含在SQL查詢中,您將需要表的元數據在SQL查詢已經建立。

0

根據您的回答史蒂夫,你在談論自己的分析嗎?如果您通過查看錶格元數據(如上面的「select *」中的「*」)來解決任何問題,則無法僅基於代碼進行此操作。你也必須擁有表格元數據。如果你真的在談論你在這裏所說的話,那麼你正在談論重新創建DBMS本身的一個主要組件。就像史蒂夫說的那樣 - 這是一項艱鉅的任務。

如果你還沒有嘗試編寫自己的SQL解析器和你真的有在應用程序中訪問數據庫,這其實是很容易的。這也不是一個不合理的問題 - 可能會有真正的應用程序需要結果集元數據,而不運行可能會有巨大執行時間的某些查詢或其他類似限制。

要獲取元數據沒有得到任何顯著的執行時間,把任何鎖的相關表,等等等等,把謂語做出來的那些註定要失敗,文字值的where子句。所有現代數據庫管理系統都足夠智能,可以優化這個功能,不會返回任何行,但大多數用於檢索結果的API仍然會捕獲結果集元數據。您將執行您的查詢,但查詢將運行得很快,不鎖定任何內容,併爲您提供結果元數據。

例子:

select 
    <lots of stuff> 
from 
    <complicated subquery> 
where 
    <there are a ton of predicates> 
    AND 0=1 

最後一行就是保證沒有結果。