如何获取sql查询的元数据信息

时间:2012-12-17 13:31:08

标签: java jdbc postgresql-9.1

我正在使用postgres 9.1和jdbc的java代码。

我可以在order by

中使用sql query string条款

我只想获取查询的meta data信息,以查找查询是否具有order by子句。如果有,那么order by clause中已指定了多少个字段。

Ex: order by age order by age, name order by age asc, name desc

在这些示例中,我只想检索order by子句及其列名中指定的参数数量。

2 个答案:

答案 0 :(得分:0)

您可以通过将SQL查询分解为部分然后重新分配来实现。 像

String sql="SELECT NAME,COMPANY,FNAME,AGE FROM COMP_DATA JOIN PERSONAL_DATA WHERE (1=1) AND FNAME='Vaibs' ORDER BY AGE";

在JAVA中写作时,请执行以下操作。 将整个查询分解为字符串部分并重新组合它。

String strSQL = "SELECT " + "NAME"+",COMPANY"+",FNAME"+",AGE" + "FROM "
        + getTableName1();  //getTableName1() return tablename

strSQL+="JOIN "+ getTable2()+"";//getTable2() return tablename as well

String strWhere = " WHERE (1=1) " + " and FNAME='" + fname+ "';


String orderBySQL = " Order by " + i_will_return_string_to_order_by();

 //return  AGE in our case

String FinalString= strSQL +strWhere +orderBySQL ;

SOP订购,以获得您想要的。 希望有所帮助。

答案 1 :(得分:0)

如果你的查询是字符串,你可以简单地解析它。

即。要弄清楚ORDER BY是否存在

"SELECT * FROM MyTable ORDER BY SomeColumn".toLowerCase().indexOf("order by") // if it's return -1 query does not contains order by section otherwise it returns start index for first occurence "ORDER BY" in given string

对于字符串中更复杂的搜索,您可能需要使用RegExp