-2

私は次のような文字列を持っています:String sql = "SELECT COL1, COL2, COL3 FROM SCHEMA.TABLE"; 今度は文字列からこの値を取得する必要があります:SCHEMA.TABLEこの値は常に変化しています。また、SQL 全体は常に変化しています。

どうすればこれを達成できますか?

異なる値を操作する方法がわかりませんか? この値は常に後でFROMあり、SQL はFROM( ORDER BY, GROUP BY...)の後に他の値を持つ場合もあります。

サンプル SQL:

`SELECT ZGAR.ZGAR_ID, JARTI.ARTI_NAME, JZGAR.ZGAR_NAME, ZGAR.KAZG_ID, ZGAR.KZPO_ID, JZGAR.ZGAR_DESC FROM NETZGP.ZGANJEARTIKEL ZGAR LEFT JOIN NETZGP.J_ARTI JZGAR ON ZGAR.ZGAR_ID = JZGAR.ZGAR_ID LEFT JOIN NETZGP.J_ARTIKEL JARTI ON ZGAR.ARTI_ID = JARTI.ARTI_ID AND JZGAR.JEZI_ID = JARTI.JEZI_ID WHERE ZGAR.ARTI_ID = 1 AND JZGAR.JEZI_ID = 1 WITH UR`
4

4 に答える 4

1

最も簡潔で信頼性の高い方法は、正規表現を使用することです。

String tableName = sql.replaceAll(".*FROM (\\S+).*", "$1");

これは、テーブル名の後に WHERE 句がある場合にも機能します。

于 2013-09-20T12:09:08.423 に答える
0

使用する:String table= queryString.substring(queryString.lastIndexOf(" ")+1);

を参照してくださいString#substring()

于 2013-09-20T12:07:15.320 に答える
0

SQL クエリが頻繁に変更される場合は、何度もPreparedStatement作成する代わりに使用する必要がありますStatement

Connection con = DriverManager.getConnection(url, user, password);
PreparedStatement pst = con.prepareStatement("SELECT COL1, COL2, COL3 FROM ?");
String schemaTable = "<ANY_TEXT>";
p.setString(1, schemaTable);
ResultSet rs = p.executeQuery();

その後、schemaTable変数を変更するだけで、再度実行p.setString(1, schemaTable); rs = p.executeQuery();して新しい結果を得ることができます。

于 2013-09-20T12:12:20.127 に答える