在PostgreSQL表中搜索

时间:2016-04-09 16:41:40

标签: sql postgresql postgresql-9.3

我有这个表,我想在其中实现搜索过滤器。

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&#34 ;;

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 :(得分:2)

IN列表存在类型转换问题。这些都必须是相同的类型,因此它们被转换为所比较的类型。并且,无法将字符串转换为整数。

如果您包含单引号,那么您的查询应该有效:

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