0

私はこのオラクルテーブルを持っています:

CREATE TABLE USERS(
        USERID INTEGER NOT NULL,
        GROUPID INTEGER,
        SPECIALNUMBER VARCHAR2(60 ),
        USERNAME VARCHAR2(50 ),
        PASSWD VARCHAR2(50 ),
        DATETOCHANGEPASSWD DATE,
        ADDRESS VARCHAR2(60 ),
        STATEREGION VARCHAR2(50 ),
        COUNTRY VARCHAR2(50 ),
        USERSTATUS VARCHAR2(30 ),
        TELEPHONE VARCHAR2(50 ),
        DATEUSERADDED DATE,
        USEREXPIREDATE DATE,
        DATEUSERLOCKED CHAR(20 ),
        CITY VARCHAR2(50 ),
        EMAIL VARCHAR2(50 ),
        DESCRIPTION CLOB
        )

このSQLクエリを使用して行をフェッチします。

SqlStatementSmall = "SELECT c.*"
            + " FROM (SELECT b.*, rownum rn"
            + " FROM (SELECT a.*"
            + " FROM USERS a"
            + " ORDER BY %s %s) b"
            + " WHERE rownum <= ?) c"
            + " WHERE rn > ?";

SQLクエリを変更して、ステータスが「アクティブ」の行のみを選択するにはどうすればよいですか?

幸運をお祈りしています

4

2 に答える 2

2
SqlStatementSmall = "SELECT c.*"
            + " FROM (SELECT b.*, rownum rn"
            + " FROM (SELECT a.*"
            + " FROM USERS a"
            + " ORDER BY %s %s) b"
            + " WHERE rownum <= ?) c"
            + " WHERE rn > ? AND USERSTATUS = 'ACTIVE'";
于 2012-07-13T16:09:37.660 に答える
1

それは本当にあなたがフィルターを適用したい場所に依存します。行数制限を開始する前に、それが必要だと思います(ページネーションを行っていると思います)。その場合、次のようにします。

SqlStatementSmall = "SELECT c.*"
            + " FROM (SELECT b.*, rownum rn"
            + " FROM (SELECT a.*"
            + " FROM USERS a"
            + " WHERE UPPER(USERSTATUS) = 'ACTIVE'"
            + " ORDER BY %s %s) b"
            + " WHERE rownum <= ?) c"
            + " WHERE rn > ?";

大文字と小文字を無視することについて質問されたので、UPPER()関数をそこに配置しました。

于 2012-07-13T17:45:42.730 に答える