MYSQL
业务实现
1.修改表中某个字段数据,为另一张表中该字段数据相同对应另一个字段的值
例子:
student表中ex1字段对应num表中ex1,并将student表中ex1修改为num表中ex2的值
结果如下
sql如下
update student set student.ex1 =
(select num.ex2 from num where student.ex1=num.ex1)
2.查询是使查询结果是当前表字段数据对应另一张表的数据
实现效果
sql如下
select *,(select ex2 from num where num.ex1=s.ex1) as ex3 from student s
db2
生成uuid
由于db2中没有像mysql中的获取uuid的方法,所以需要自定义一个方法函数,生成uuid
代码如下
CREATE OR REPLACE FUNCTION test.F_GET_UUID ( ) RETURNS VARCHAR(64)
SPECIFIC F_GET_UUID
LANGUAGE SQL
NOT
DETERMINISTIC EXTERNAL ACTION
READS SQL DATA
INHERIT SPECIAL REGISTERS RETURN lower(hex(RAND())|| hex(RAND()))
调用方法:
SELECT test.F_GET_UUID() FROM SYSIBM.SYSDUMMY1;
在查询语句中使用(在查询语句中,直接——库名.自定义的函数——就可以直接生成uuid)
SELECT
GBSC00.f_get_uuid,
to_char(CURRENT_TIMESTAMP, 'yyyyMMddHH24Miss')
FROM test.dome1 t;
db2获取当前时间
代码如下
--获取时间
VALUES CURRENT_TIMESTAMP
--获取时间 yyyy-MM-dd年月日
VALUES to_char(CURRENT_TIMESTAMP, 'yyyy-MM-dd')
--获取时间 yyyy-MM-dd HH24:Mi:ss年月日时分秒
VALUES to_char(CURRENT_TIMESTAMP, 'yyyy-MM-dd HH24:Mi:ss')
--获取时间 时间的14位
VALUES to_char(CURRENT_TIMESTAMP, 'yyyyMMddHH24Miss')
可以根据yyyyMMddHH24Miss的格式,自定义需要获取时间的格式
DB2将一列转成一行并用逗号隔开
1、 REPLACE(REPLACE(xml2clob(xmlagg(xmlelement(NAME A, a.PROD_SPEC || ','))), '<A>', ''), '</A>', '') AS PROD_SPEC
-- 都可用
2、LISTAGG(my_column, ',')
-- 请注意,LISTAGG函数在DB2版本 9.7及以上可用。
将一列2020、2021、2022数据转成成一行
DB2存储过程实现,通过判断数据库是否重复,返回不同的结果
以下是案例
DELIMITER //
CREATE OR REPLACE PROCEDURE BGTAMSLZ00.MB_ADD_0001(
IN IN_MB VARCHAR(32),IN IN_DATE_PRC VARCHAR(32),
IN IN_JZ VARCHAR(32),IN IN_BIANHAO VARCHAR(64),
IN IN_REMARK1 VARCHAR(255),IN IN_REMARK2 VARCHAR(255),
IN IN_REMARK3 VARCHAR(255),IN IN_REMARK4 VARCHAR(255),
IN IN_REMARK5 VARCHAR(255),IN IN_REMARK6 VARCHAR(255),
IN IN_REMARK7 VARCHAR(255),IN IN_REMARK8 VARCHAR(255),
IN IN_REMARK9 VARCHAR(255),IN IN_REMARK10 VARCHAR(255))
/*
| PROCEDURE NAME: MB_0001
| 传参类型
| 目标值,日期,机组,报表编号,备注1,备注2,备注3,备注4,备注5,备注6,备注7,备注8,备注9,备注10
| OVERVIEW: 冷轧各主题目标值维护(增删改查)-新增操作
|
| AUTHOR(S):
|
| 修改日志:
| 日期 作者 内容
| 2023-04-03 创建
*/
RESULT SETS 2
BEGIN
DECLARE my_var1 INTEGER DEFAULT 0;
DECLARE RESULT_SET CURSOR WITH RETURN FOR
SELECT '添加成功' AS A1
FROM SYSIBM.SYSDUMMY1;
DECLARE RESULT_SET2 CURSOR WITH RETURN FOR
SELECT '添加重复' AS A1
FROM SYSIBM.SYSDUMMY1;
SELECT COUNT(1) INTO my_var1
FROM BGTAMSLZ00.T_DWS_ZZPQ_GYLZ_MUBIAO_WEIHU
WHERE BIANHAO=IN_BIANHAO;
IF my_var1>0 THEN
OPEN RESULT_SET2;
ELSE
OPEN RESULT_SET;
IF (IN_BIANHAO!='' OR LENGTH(IN_BIANHAO)!=0) and (IN_REMARK10!='' OR LENGTH(IN_REMARK10)!=0) THEN
INSERT INTO BGTAMSLZ00.T_DWS_ZZPQ_GYLZ_MUBIAO_WEIHU
(REC_ID,MB,DATE_PRC,JZ,BIANHAO,REMARK1,REMARK2,REMARK3,
REMARK4,REMARK5,REMARK6,REMARK7,REMARK8,REMARK9,REMARK10)
VALUES
(IN_BIANHAO||'-'||IN_JZ||'-'||BGTAMSLZ00.F_GET_UUID(),IN_MB,IN_DATE_PRC,IN_JZ,IN_BIANHAO,IN_REMARK1,IN_REMARK2,IN_REMARK3,
IN_REMARK4,IN_REMARK5,IN_REMARK6,IN_REMARK7,IN_REMARK8,IN_REMARK9,IN_REMARK10);
END IF;
END IF;
END
//