Implementiere Suchfilter für alle Spalten

Ich habe dieses Suchbeispiel in PostgreSQL gefundenhttp: //www.postgresql.org/docs/current/interactive/textsearch-tables.html#TEXTSEARCH-TABLES-SEARC

Ich habe versucht, diesen Code für diese Tabelle folgendermaßen zu implementieren:

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)
;

Java Code

public List<AccountsObj> list(int firstRow, int rowCount, String sortField, boolean sortAscending) throws SQLException
    {
        String SqlStatement = null;

        Connection conn = ds.getConnection();
        if (conn == null)
        {
            throw new SQLException();
        }

        String sortDirection = sortAscending ? "ASC" : "DESC";

        SqlStatement = "SELECT * FROM ACCOUNT "
//            + " WHERE ? IS NULL OR ? IN (USER_NAME, FIRST_NAME, LAST_NAME)"
            + " WHERE to_tsvector('english', USER_NAME || ' ' ) @@ plainto_tsquery(?)"
            + " ORDER BY %S %S offset ? limit ? ";

        String sql = String.format(SqlStatement, sortField, sortDirection);

        PreparedStatement ps = null;
        ResultSet resultSet = null;
        List<AccountsObj> resultList = new ArrayList<>();

        try
        {
            conn.setAutoCommit(false);
            boolean committed = false;

            ps = conn.prepareStatement(sql);

            ps.setString(1, searchString);
            ps.setInt(2, firstRow);
            ps.setInt(3, rowCount);

            resultSet = ps.executeQuery();
            resultList = ProcessorArrayList(resultSet);

            conn.commit();
            committed = true;

        }
        finally
        {
            ps.close();
            conn.close();
        }

        return resultList;
    }

Aber ich habe zwei Probleme. Wenn die Suchzeichenfolge leer ist, ist auch die Tabelle leer. Wie kann ich das lösen? Wie kann ich diese Suche auch für jede Tabellenspalte implementieren?

P.S Ich habe versucht,WHERE to_tsvector('english', USER_NAME || ' ' ) @@ plainto_tsquery(?) IS NOT NULL

Aber der Suchfilter wird nicht angewendet.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage