AS400 DB2 SQL常用函数总结

说明,本文所述,全部是针对使用SQL语句操作DB2,而不是在AS400的绿屏下使用AS400的命令操作Library、object、menber

一、AS400 DB2 SQL语法基础特别说明

1、AS400 DB2 SQL库、表、字段名都不区分大小写
2、AS400 DB2如果不在绿屏里面使用DDS创建表,而是直接使用SQL创建表,注意字段类型不支持一下类型
  • 不支持VARCHAR2, 但是支持VARCHAR
3、表没有取别名的情况下,则字段一定不能使用别名.字段

开发时,多表join查询,有时因为不同的表有相同的字段,这是需要对表名取别名,然后表别名.字段,以区分具体是哪个表的字段

SELECT ITNBR FROM AMFLIBF.ITMRVA;               --√:表不使用别名
SELECT ITNBR FROM AMFLIBF.ITMRVA ITMRVA;        --√:表使用别名,字段不加表别名
SELECT ITMRVA.ITNBR FROM AMFLIBF.ITMRVA ITMRVA; --√:表使用别名,字段也加表别名
SELECT ITMRVA.ITNBR FROM AMFLIBF.ITMRVA;        --×:表不使用别名,字段加表别名,(Oracle支持此写法,请注意对比)

二、常用SQL函数

1、AS400 DB2复制表SQL语句

AS400 DB2依据一个表,创建一个新的表,语法完全不同于其他数据库,如果需要复制表数据,必须分2个步骤,先定义复制表,然后再拷贝数据

  • 定义复制表 ,DEFINITION ONLY
CREATE TABLE 复制库.复制表名 AS (SELECT * FROM 参考库.参考表) DEFINITION ONLY;
  • 复制表数据,复制数据和其它数据库操作类似
INSERT INTO 复制库.复制表名 SELECT * FROM 参考库.参考表;

2、coalesce函数使用,类似于其他数据库的NVL函数

coalesce(字段,默认值):结果就是如果字段值不为NULL,则使用自己的值,否则使用默认值

SELECT COALESCE(MAX(ADFCNB), 100) FROM AMFLIBF.MBADREP WHERE ADCVNB = '    666'
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DB2 SQL中,可以通过使用函数如concat、posstr和locate来实现行转列和列转行。 行转列: 假设有一个表格t,包含以下数据: ``` ╔═══════════╗ ║ 列名 ║ ╠═══════════╣ ║ 值1 ║ ║ 值2 ║ ║ 值3 ║ ╚═══════════╝ ``` 现在我们想要将这个表格的数据进行行转列,可以使用concat函数来实现。例如: ```sql SELECT CONCAT(t.值1, ',', t.值2, ',', t.值3) AS 列转行结果 FROM t; ``` 这将返回一个结果集,其中每个行都会将原来的值连接在一起,以逗号分隔,如下所示: ``` ╔════════════════════════╗ ║ 列转行结果 ║ ╠════════════════════════╣ ║ 值1, 值2, 值3 ║ ╚════════════════════════╝ ``` 列转行: 假设有一个表格t,包含以下数据: ``` ╔════════════════════════╦════════════════════════╦════════════════════════╗ ║ 值1 ║ 值2 ║ 值3 ║ ╠════════════════════════╬════════════════════════╬════════════════════════╣ ║ A ║ B ║ C ║ ╚════════════════════════╩════════════════════════╩════════════════════════╝ ``` 现在我们想要将这个表格的数据进行列转行,可以使用posstr和locate函数来实现。例如: ```sql SELECT SUBSTRING(t.值1, LOCATE(',', t.值1) + 1) AS 值 FROM t WHERE LOCATE(',', t.值1) <> 0 UNION SELECT t.值2 AS 值 FROM t UNION SELECT t.值3 AS 值 FROM t; ``` 这将返回一个结果集,其中每个行都包含原来每个列的值,如下所示: ``` ╔═════════╗ ║ 值 ║ ╠═════════╣ ║ B ║ ║ C ║ ║ A ║ ╚═════════╝ ``` 通过使用这些函数,可以很方便地实现行转列和列转行的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值