说明,本文所述,全部是针对使用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'