DB2一些SQL的用法

1.RRN(Table) 会显示该record在这个表中唯一的行号,此行号自动增长,不会被重用
select RRN(Table) as RowID from Table

2.Update *HIVAL/*LOCAL by SQL
Update Table Set Value=X'FFFF'    // *HIVAL
Update Table Set Value=X'0000'    // *LOVAL

3.连接字符串
Update Table Set Column1='R'||Column1
Update Table Set Column1='ABC'||SubString(Column1,4)
Update Table Set Column1='ABC'||Right(Column1,2)

4.查找Column1中的空格位置
SELECT  Locate(' ',trim(Column1)) from Table

5.截取字符串
SELECT Substr(Column1,3),Substr(Column1,3,2),Left(Column,3),Right(Column,3) from Table

6.當前日期時間
SELECT curdate(),curtime() from Table

7.日期比較
SELECT days (curdate()) - days(date('2014-02-01')) FROM Table

AS400 计算日期时间
http://www.aixchina.net/club/thread-27763-1-1.html

8.前面幾條
select top ?

SELECT * FROM orders FETCH FIRST 100 ROWS ONLY

9.字符串長度,去除空格
length(...)
trim(...)  rtrim(...)  ltrim(...)

SELECT icincd,length(name),length(trim(name)) FROM orders

10.替換字符串
select replace('aaabb','ab','vvv') from  orders

11.Case when

SELECT * from orders     
ORDER BY CASE no WHEN 0 THEN 900000 ELSE no END

12.轉義字符
2個引號
INSERT INTO QTEMP/TEST VALUES(1,'abc''')    

 

13.row_number()
select test ,ROW_NUMBER() over(partition by test1 order by (case test2 when 0 then 999999 else test2 end) desc ) as rownum from tlib/file WHERE rownum = 1

14.裝換類型
SELECT int(1.01),int('123'), int('123a'),cast(1  as decimal(5,2) ) ,coalesce(1.1,0), replace(1.1,'NULL','0'),replace('aa','a'  ,'0') from tlib/file

 15.isnull函數
   coalesce ,   replace      

16.upper,lower函數  

17.利用translate函數判斷字符串不含有字母數字
SELECT test1,                                           
   translate(test1,'?????????????????????????????????????',       
'01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ' )                           
FROM test                                                      
where trim(test1)<>'' and   trim(                                 
   translate(test1,'                                     ',       
   '01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  ))<>''    

18.批量更新DB2 mass update 

UPDATE tlib/test2 SET txt= (SELECT txtFROM             

 (select DISTINCT TXT1 from tlib/test1 GROUP BY   txt1,txt2) AS NT WHERE txt=  NT.txt)       

19.union里面的子查询order by 不起作用:使用union all

20.

merge into tlib/test b                               
using (                                                        
SELECT *    FROM tlib/test t1,tlib/test t2        
) as d                                                         
on  txt=d.txt
 when matched then update set b.txt1='234'    

posted on   白马酒凉  阅读(547)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
< 2013年4月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11

导航

统计

点击右上角即可分享
微信分享提示