程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> Sybase,幾個sql使用小功能

Sybase,幾個sql使用小功能

編輯:SyBase綜合文章

一些實用的SQL的寫法可以減少自己的程序繁瑣程度,有些事情的確可以通過sql讓所需要的數據在rs裡面就能獲取:

1. 將數據庫中的幾個字段合為一個字段輸出:

-- 主要使用convert將其它非varchar類型的轉為統一類型再進行加的操作

select column1+','+convert(varchar(1),column2) as column from mytable 

 

2. 按表中某個字段分類,並將每一類的數據記錄數輸出

-- 按type分類,將每一類type(1,2,3)的記錄數作為count_num輸出,並且對 column1進行去重,比如記錄中column1的值為"test"的有兩條,但只作為一條統計

 select count(distinct column1) as count_num from mytable where type in(1,2,3)  group by type order by type asc

 

3. 多個字段同時計算sum並輸出,按一定的時間條件

-- 分別計算clm1,,,的sum

select sum(clm1) as out1, sum(clm2) as out2, sum(clm3) as out3 from mytable where convert(varchar,sdate ,112)='2015-01-21 12:11:10"

 

4. Sybase的後台分頁與Oracle不同:

    a. Sybase分兩步:

    (1) 將表復制一份,並在復制表裡面增加自增的identity類型的字段(類似Oracle表裡面自有的rownum字段);

        select *,ids=identity(9) into mytemptable from mydataTable

    (2) 使用select top結合identify類型字段將記錄查出:

        select top  100 from mytemptable where ids > (pageSize * (pageNow - 1))   and ids <=  (pageSize * pageNow)

 

5.  Java程序邏輯中如果需要大批量執行sql語句,可以按批次執行,比如每批次300條,但對於insert來說效率還是很低,因為數據庫有日志操作

    public static int executeBatchSql(List<String> batchsql) {
        int count = batchsql.size();
        Connection conn = null;
        Statement stmt = null;
        int[] result = new int[batchsql.size()];
        try {
            conn = DBConnection.getConnection();
            stmt = conn.createStatement();
            for (int i = 0; i < count; i++)
            {
    // 將sql加入批處理池
                stmt.addBatch(batchsql.get(i));
                if ((i>0 && i % 300 == 0) || i == batchsql.size() - 1){
                    result = stmt.executeBatch();
                }
                if (i !=0 && i % 300 == 0) {
        // 每批次後重新建立鏈接
                    DBConnection.releaseResources();
                    conn = DBConnection.getConnection();
                    stmt = conn.createStatement();
                }
            }
            return result.length;
        } catch (Exception ex)
        {
            ex.printStackTrace();
            return -1;
        } finally {
      // 釋放數據庫資源
            DBConnection.releaseResources();
        }
    }

6. 其它還有,後續再補充編輯該帖;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved