我想问一下如何提取列名称&它们各自的值来自SQL查询而不执行语句。
例如:
select * from table where fieldname = 'fieldvalue'
我想从查询中提取“FieldName”和“FieldValue”。
Insert into table (field,field2,field3)
values ('fieldvalue','field2avlue','field3'svalue')
我想从查询中提取“field”,“field2”和“fieldvalue”,“field2avlue”,“field3'svalue”。
答案 0 :(得分:0)
根据你对Steve的回答,你在谈论自己解析它?如果您通过查看表元数据(如上面的“select *”中的“*”)来解决任何问题,则不能仅基于代码执行此操作。您还必须拥有表元数据。如果你真的在谈论你在这里所说的话,那你就是在谈论重建DBMS本身的一个主要组成部分。就像史蒂夫所说 - 这是一项艰巨的任务。
如果您没有尝试编写自己的SQL解析器,并且您确实可以访问应用程序中的数据库,那么这实际上非常简单。这也不是一个不合理的问题 - 可能存在真正的应用程序,你需要结果集元数据而不运行一些可能有大量执行时间的查询,或者其他类似的限制。
要获取元数据而不获取任何重要的执行时间,在所涉及的表等上放置任何锁定,请在where子句中放置一个谓词,该子句由保证失败的文字值组成。所有现代DBMS都足够聪明,可以对此进行优化,不会返回任何行,但是大多数用于检索结果的API仍然会捕获结果集元数据。您将执行查询,但查询将快速运行,不锁定任何内容,并为您提供结果元数据。
示例:
select
<lots of stuff>
from
<complicated subquery>
where
<there are a ton of predicates>
AND 0=1
最后一行是什么保证没有结果。
答案 1 :(得分:0)
我正在使用@Sandra Walters的建议,即:解决该问题的理想方法是在将字段值包含在SQL查询之前清理它们,您需要表的元数据才能在SQL之后正确执行查询已经建立。