2016-04-05 14 views
0

任意の種類のSQL文(選択、更新、削除、挿入)を保持できる文字列があります。SQL文(Java)でカラム名とテーブル名を大文字にするにはどうすればよいですか?

その文の列名と表名を大文字にしたいとします。

のは、我々が持っているとしましょう:

select id from person where name="Dave" 

そして、私は

select ID from PERSON where NAME="Dave" 

は、今まで私はJavaで一部のSQLパーサを発見したが、解析する別速く簡単な方法があるかどうか、私は疑問に思って欲しいですSQLを再構築します。

EDITちょうどさらに、問題を明確にするために、データベースの照合順序はトルコ語であると私は解決しようとしている問題は、「トルコの私の問題」です。 DB内のカラム/テーブルの名前はすべて大文字ですが、Javaアプリケーションでは小文字のカラムとテーブルを含むSQL文が生成されます

+0

照合で大文字と小文字を区別しない場合は、クエリ全体を大文字にします。 TSQLは大文字と小文字を区別しません。そうでない場合は、パラメータを使用する必要があります。 –

+0

*データベース*の照合順序を大文字小文字を区別しないように変更することはできませんが、必要に応じて列に大文字小文字を区別した照合順序を設定できますか? –

答えて

0

私はあなたの質問を正しく理解していますが、あなたのクエリは次のようになります。

SELECT id AS ID FROM person WHERE name = "Dave"; 
1

あなたはバインド変数とともに準備文を使用しなければなりません。これを行うことで、クエリを大文字にして、必要に応じてバインド変数を置くことができます。例えば

String query = "select id from person where name=?" 
Connection con = .... ; 
PreparredStatement ps = con.prepareStatement(query.toUpperCase()); 
ps.setString(1, "Dave"); 

ResultSet rs = ps.executeQuery(); 

は、この情報がお役に立てば幸いです。

0

あなたはこのような何か行うことができます。

public String queryText(final String message, final String... args) { 
    return String.format(message.toUpperCase().replace("?", "%s") + "%n", args); 
} 

をこのようにそれを呼び出す:

System.out.println(queryText("select id from person where name=?", "Dave")); 

が出力:NAME =デイブ

はそれが

を役に立てば幸いPERSON FROM SELECT ID
関連する問題