DM/达梦数据库查询或更新某一列中多个字典码对应内容

news2024/11/16 8:32:49

准备工作(建表、插入数据)

1、建立表格:学生-学习科目表student_study
注意:科目kemu列内容是字典码,需要更换成对应内容。

CREATE TABLE "TEST"."STUDENT_STUDY"
(
"NAME" VARCHAR(255),
"KEMU" VARCHAR(255)) STORAGE(ON "MAIN", CLUSTERBTR) ;

COMMENT ON COLUMN "TEST"."STUDENT_STUDY"."NAME" IS '姓名';
COMMENT ON COLUMN "TEST"."STUDENT_STUDY"."KEMU" IS '科目,内容是字典码,以英文逗号分隔';

INSERT INTO TEST.STUDENT_STUDY VALUES('张三','@1,@2'),('李四','@1,@3'),('王五','@1,@2,@3');

在这里插入图片描述

2、建立表格:编号-学科对应表格xueke
注意:这张表是字典码编号和科目xueke的对应关系表。

CREATE TABLE "TEST"."XUEKE"
(
"BIANHAO" VARCHAR(255),
"XUEKE" VARCHAR(255)) STORAGE(ON "MAIN", CLUSTERBTR) ;

COMMENT ON COLUMN "TEST"."XUEKE"."BIANHAO" IS '字典码编号';
COMMENT ON COLUMN "TEST"."XUEKE"."XUEKE" IS '学科名称';

INSERT INTO TEST.XUEKE VALUES('@1','数学'),('@2','语文'),('@3','英语');

在这里插入图片描述

自定义存储函数

-- 所有函数及定义参考DM8_SQL语言使用手册、DM8_SQL程序设计(在DM安装目录/doc/下)
CREATE OR REPLACE FUNCTION get_code_meaning(codes IN VARCHAR(200)) RETURN VARCHAR(200)
AS
i INT DEFAULT 1;-- 或者 i INT := 1
max_i INT;
code VARCHAR(100);
meaning VARCHAR(100);
result_type VARCHAR(200);
BEGIN
	-- 去除前后多余的逗号,LEADING去除左边(或使用LTRIM()函数),TRAILING去除右边(或使用RTRIM()函数),BOTH去除两端(默认是BOTH)
	codes := TRIM(BOTH ',' FROM codes);
	-- 获取字符串内码值个数
	max_i := LENGTH(codes) - LENGTH(REPLACE(codes, ',', '')) + 1; 
	WHILE i<=max_i LOOP
		-- 取出每个元素,以','进行分割
		code := SUBSTRING_INDEX(SUBSTRING_INDEX(codes, ',', i), ',', -1); 
		-- 在这里查询代码表获取每个代码的含义,并赋值给meaning变量
		-- 此处根据WHERE条件查询的结果必须是一行记录,否则报错 ;多行记录需使用`TOP 1`或者`LIMIT 1`进行处理
        SELECT XUEKE INTO meaning FROM TEST.XUEKE WHERE BIANHAO = code;  
        IF result_type IS NOT NULL THEN
        	result_type := CONCAT_WS(',',result_type,meaning);
        ELSE
        	result_type := meaning;
        END IF;
        i := i+1;
	END LOOP;
	RETURN result_type;
END;

查询出多个字典码对应的内容

SELECT NAME,KEMU,get_code_meaning(KEMU) FROM TEST.STUDENT_STUDY;

在这里插入图片描述

替换多个字典码对应的内容

UPDATE TEST.STUDENT_STUDY SET KEMU=get_code_meaning(KEMU);

表里科目列字典项数据已经替换成对应内容:
在这里插入图片描述

参考SQL Server更新某一列中多个字典码对应内容(sql示例),该博主给出的是SQL Server的方法,因业务需求,本人自行更改为DM数据库的可行方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1033284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

技术分享| anyRTC音视频混流技术解析

一&#xff0c;简介 在视频通讯场景中&#xff0c;比如会议、直播等经常能看到图像合成的场景。图像合成是在指定的一块画面区域&#xff0c;在这个区域内&#xff0c;按画面的位置(坐标)布局&#xff0c;将区域中的每个视频画面的像素混合计算成一个像素&#xff08;RGB&…

深度学习中的激活函数 – 完整概述

1.什么是激活函数? 生物神经网络启发了人工神经网络的发展。然而,人工神经网络甚至不能近似代表大脑的工作方式。在我们知道为什么在人工神经网络中使用激活函数之前,了解生物神经网络中激活函数的相关性仍然很有用。 典型的神经元具有由细胞体、向其他神经元发送信息的轴…

源码:TMS FlexCel Studio for .NET 7.19

TMS FlexCel Studio for .NET 是100% 托管代码 Excel 文件操作引擎以及 Excel 和 PDF 报告生成&#xff0c;适用于 .NET、Xamarin.iOS、Xamarin.Android、Xamarin.Mac、Windows Phone 和 Windows Store 功能概述 使用 FlexCel Studio for .NET 创建可动态快速读写 Excel 文件的…

SQLite 3.43 发布,性能大提升!

前言 SQLite是一种被广泛运用的嵌入式关系型数据库管理系统&#xff0c;最新发布的SQLite 3.43版本带来了一个重要的改进&#xff0c;大幅提升了对JSON数据的处理性能&#xff0c;达到了之前的两倍。 主要更新 添加对 Contentless-Delete FTS5 索引的支持。这是 FTS5 全文搜索…

Go 常用命令介绍

Go 常用命令 文章目录 Go 常用命令一、Go 常用命令1.1 go build1.1.1 指定输出目录1.1.2 常用环境变量设置编译操作系统和 CPU 架构1.1.3 查看支持的操作系统和CPU架构 1.2 go test1.3 go vet1.4 go clean1.5 go fmt1.6 go get1.7 go install1.8 go tool1.9 go generate1.10 go…

iOS——KVC(键值编码)

键值编码&#xff08;KVC&#xff09; KVC&#xff08;Key Value Coding&#xff09;是一种允许以字符串形式间接操作对象属性的方式。 最基本的KVC是由NSKeyValueCoding协议提供支持&#xff0c;最基本的操作属性如下&#xff1a; setValue: 属性值 forKey: 属性名&#xff…

Flink1.14 Source概念入门讲解与源码解析

目录 Flink Source概念 Source Source源码 getBoundedness() createReader(SourceReaderContext readerContext) createEnumerator(SplitEnumeratorContext enumContext) SplitEnumerator restoreEnumerator(SplitEnumeratorContext enumContext, EnumChkT checkpoint) …

使用Selenium进行网页登录和会话管理

随着互联网的快速发展&#xff0c;网页登录和会话管理是许多网站和应用程序的基本功能。通过网页登录&#xff0c;用户可以访问个人账户、购物车订单、历史记录等个性化信息。为了提高用户体验和效率&#xff0c;自动化登录和会话管理成为一个重要的需求。而Selenium作为一种强…

信创办公–基于WPS的EXCEL最佳实践系列 (限制可录入内容)

信创办公–基于WPS的EXCEL最佳实践系列 &#xff08;限制可录入内容&#xff09; 目录 应用背景操作过程1、数据有效性&#xff08;支出证明单&#xff09;2、如何完成数据有效性的使用&#xff08;差旅报销申请表&#xff09;3、清除数据验证4、利用圈释无效数据&#xff0c;验…

Docker容器中的SSH免密登录

简介&#xff1a;在日常的开发和测试环境中经常需要创建和管理Docker容器。有时&#xff0c;出于调试或管理的目的&#xff0c;可能需要SSH到容器内部。本文将介绍如何创建一个Docker容器&#xff0c;它在启动时自动运行SSH服务&#xff0c;并支持免密登录。 历史攻略&#xf…

在github上设置不同分支,方便回滚

在github上设置不同分支&#xff0c;方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改&#xff08;如果还未进行&#xff09;3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码&#xff0c…

用Win10自带画图3D抠图

文章目录 一、打开“画图3D”二、插入图片三、抠图操作四、保存抠图 一、打开“画图3D” 在搜索框输入“画图3D” 选择彩色水滴图标的软件 二、插入图片 选择“新建” 导航栏“菜单”–>“插入”&#xff0c;选择要扣的图片。&#xff08;我选择了一张自己随意画的图片…

【动态规划刷题 17】回文子串 最长回文子串

647. 回文子串 链接: 647. 回文子串 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串&#xff0c;即使是由…

启动 React APP 后经历了哪些过程

本文作者为 360 奇舞团前端开发工程师 前言 本文中使用的React版本为18&#xff0c;在摘取代码的过程中删减了部分代码&#xff0c;具体以源代码为准。 在React 18里&#xff0c;通过ReactDOM.createRoot创建根节点。并且通过调用原型链上的render来渲染。 本文主要是从以下两个…

Python函数绘图与高等代数互融实例(五): 则线图综合案例

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 Python函数绘图与高等代数互融实例(五…

iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据

目录 转载&#xff1a;怎么保护苹果手机移动应用程序ipa中文件安全&#xff1f; 前言 1. 对敏感文件进行文件名称混淆 2. 更改文件的MD5值 3. 增加不可见水印处理 3. 对html&#xff0c;js&#xff0c;css等资源进行压缩 5. 删除可执行文件中的调试信息…

关于分布式一致性

一致性&#xff08;consistency&#xff09; 说到一致性&#xff0c;我们可能最先想到的数据库里的事务 这里的讨论的是分布式的一致性&#xff0c;事务就简化一下&#xff0c;只考虑Read/Write 先列举一下事务的种类&#xff1a; 单机的事务&#xff1a;多个复杂事务发生在一…

React组件化开发

1.组件的定义方式 函数组件Functional Component类组件Class Component 2.类组件 export class Profile extends Component {render() {console.log(this.context);return (<div>Profile</div>)} } 组件的名称是大写字符开头&#xff08;无论类组件还是函数组件…

ElementUI之登录与注册

目录 一.前言 二.ElementUI的简介 三.登录注册前端界面的开发 三.vue axios前后端交互--- Get请求 四.vue axios前后端交互--- Post请求 五.跨域问题 一.前言 这一篇的知识点在前面两篇的博客中就已经详细详解啦&#xff0c;包括如何环境搭建和如何建一个spa项目等等知识…

【二叉树魔法:链式结构与递归的纠缠】

本章重点 二叉树的链式存储二叉树链式结构的实现二叉树的遍历二叉树的节点个数以及高度二叉树的创建和销毁二叉树的优先遍历和广度优先遍历二叉树基础oj练习 1.二叉树的链式存储 二叉树的链式存储结构是指&#xff0c;用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑…