2016-04-09 11 views
0

私は検索フィルタを実装したいこのテーブルを持っています。PostgreSQLのテーブルで検索

CREATE TABLE ACCOUNT(
ID INTEGER NOT NULL, 
USER_NAME TEXT, 
PASSWD TEXT, 
FIRST_NAME TEXT, 
LAST_NAME TEXT, 
LAST_LOGIN DATE, 
DATE_REGISTERED DATE, 
ROLE INTEGER, 
CAN_LOGIN INTEGER 
) 
; 

-- ADD KEYS FOR TABLE ACCOUNT 

ALTER TABLE ACCOUNT ADD CONSTRAINT KEY1 PRIMARY KEY (ID) 
; 

String searchString = "32";

SELECT * FROM ACCOUNT 
WHERE " + searchString + " IN (ID, USER_NAME, FIRST_NAME, LAST_NAME) ORDER BY %S %S offset ? limit ?; 

私はまた、私は私が検索したいすべてのテーブルの列を指定しないエラー

serverError: class java.lang.IndexOutOfBoundsException Index: 0, Size: 0 

を取得します。既定ですべての列に検索を実装する方法はありますか?そして、検索したくない1つの列を指定するだけです。

+0

(1)変数置換後のクエリを出力します。 (2)メッセージにエラーを含めてください。 –

+0

あなたは私に方法を教えてもらえますか? SQLの経験はほとんどありませんか? –

+0

[テーブル内のすべての列を検索するには?](http://stackoverflow.com/questions/7922744/how-can-i-search-all-columns-in-a-table)をチェックしてください。とにかく 'IN'はあなたに完全に一致するものだけを取得します。 – lad2025

答えて

2

INリストにタイプ変換の問題があります。これらはすべて同じ型でなければならないので、比較対象の型に変換されます。そして、文字列をintに変換することに失敗しています。

あなたは、単一引用符を含める場合は、クエリが動作するはずです:

WHERE '" + searchString + "' IN (ID, USER_NAME, FIRST_NAME, LAST_NAME) 
+1

ありがとうございます。私は空の検索文字列 'org.postgresql.util.PSQLException:ERROR:整数の入力構文が無効です:" null "Position:30'文字列フィルタが空であれば検索をスキップできますか? –

+0

私は2つの異なるクエリを書くことをお勧めします。 –

+0

この投稿を確認してくださいhttp://stackoverflow.com/questions/36522826/implement-search-filter-for-all-columns –

関連する問題