当前位置: 首页 > news >正文

【达梦数据库】mysql 和达梦 tinyint 与 bit 返回值类型差异

测试环境 mysql5.7.44
达梦2024Q2季度版

前言

在mysql 中存在 tinyint(1)的用法来实现存储0 1 作为boolean的标识列;但是在达梦并不允许使用 tinyint(1)来定义列,只能使用 tinyint 即 取值范围为:-128 ~ +127;实际上mysql 使用tinyint(1)定义列,取值范围仍为-128 ~ +127,并非 {0, 1} ;但是在mysql 中当 tinyint存储为0 1 时,jdbc 使用getObjecct获取改列的值类型为boolean,并非数字,这又是怎么回事呢。先说答案,为了在达梦JDBC获取到boolean类型需要在数据库中将对应列改为bit 类型。

分析

mysql实验

tinyint取值范围

插入数据验证mysql 的 tinyint(1)的存储范围是否为 {0, 1}

create table test_tinyint_20240911(a1 tinyint(1),name varchar(20));
insert into test_tinyint_20240911 values(100,'test100');
insert into test_tinyint_20240911 values(133,'test100');

在我的测试环境中mysql 将超出的列值自动进行了截断,取了取值上限
mysql插入测试
那么,可以证明的 tinyint(1)的存储范围不为 {0, 1}

tinyint jdbc返回值类型

  • 插入boolean 返回boolean getBoolean在这里插入图片描述
  • 插入数字返回布尔 getObject
    在这里插入图片描述
  • 插入数字返回数字 getObject
    在这里插入图片描述
  • 插入数字返回数字 getInt
    在这里插入图片描述
  • 定义tinyint(13)插入数字返回数字 getInt
    在这里插入图片描述

达梦实验

tinyint建表测试

create table test_tinyint_20240911(a1 tinyint(1),name varchar(20)); --报错
create table test_tinyint_20240911(a1 tinyint,name varchar(20));insert into test_tinyint_20240911 values(100,'test100');
insert into test_tinyint_20240911 values(133,'test100');

tinyint(1)测试
插入测试

tinyint jdbc返回值类型

  • tinyint 插入boolean返回数字 getObject
    在这里插入图片描述
  • tinyint 插入数字返回数字 getObject

在这里插入图片描述

  • bit 插入boolean 返回boolean getObject

在这里插入图片描述

  • bit 插入boolean 返回数字 getInt
    在这里插入图片描述
  • bit 插入数字 返回boolean getBoolean

在这里插入图片描述

测试结论

测试截图比较乱,但是可以看到当mysql 通过getObject 接口获取数据时,会将大于0 的数字返回为true;而这种情况是因为mysql的默认jdbc连接参数 tinyInt1isBit=true导致的,当 tinyint(1)时通过getObject 获取出的数据为boolean
在这里插入图片描述
在这里插入图片描述
对比达梦的测试结果getObject 获取的值中,数据库类型为bit时返回boolean类型,数据库类型为tinyint时返回值类型为int 数字,当然也可以使用隐式方式将返回结果转变为数字或者boolean类型

对于使用数据库过程中,个人倾向于“O式用法”即要类型一致,boolean就用bit类型存储,时间类型用timestamp 而非字符串;但是实际的使用过程中因为各种原因,仅关注这个模块是否可以跑起来,跑起来就完事大全,这样看似省事,但其实隐藏了其他的问题

对于数据库来说,从数据库中读写数据往往涉及到类型转换,那么数据库是怎么在驱动层制定类型转换的规则,又如何在驱动层完成类型的校验。待我有空 我再去研究研究

参考链接

https://dev.mysql.com/doc/connector-j/en/connector-j-connp-props-result-sets.html#cj-conn-prop_tinyInt1isBit
https://dev.mysql.com/doc/connector-j/en/connector-j-reference-type-conversions.html
https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
https://eco.dameng.com/document/dm/zh-cn/pm/dm_sql-introduction.html#1.4.1%20%E5%B8%B8%E8%A7%84%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B

相关文章:

【达梦数据库】mysql 和达梦 tinyint 与 bit 返回值类型差异

测试环境 mysql5.7.44 达梦2024Q2季度版 前言 在mysql 中存在 tinyint(1)的用法来实现存储0 1 作为boolean的标识列;但是在达梦并不允许使用 tinyint(1)来定义列,只能使用 tinyint 即 取值范围为&#xff…...

VUE工程中axios基本使用

安装axios npm install axios -s在main.js中引入 import http from axios Vue.prototype.$http = http将其绑定在VUE的prototype属性中 vue工程目录下,新建config文件夹,在config文件夹下新建index.js export default {...

跨服务器执行PowerShell脚本

本机和远程机都要执行 Enable-PSRemoting -Force 远程端关闭公用网络 Get-NetConnectionProfile Set-NetConnectionProfile -Name "未识别的网络" -NetworkCategory Private 本机和远程机都要执行 winrm quickconfig 将远程机ip加入信任列表 cd WSMan::localhost\…...

linux_L2_linux删除文件

linux 删除文件 在Linux下删除文件有多种实现方法,以下是其中几种常见的方法: 方法一:使用rm命令删除单个文件 rm 文件路径例如,删除当前目录下的文件file.txt: rm file.txtQuestion :当你在Linux系统中使用rm命令删…...

系统架构设计师 - 项目管理

项目管理 项目管理(1-3分,案例分析 25分)立项管理 ★盈亏平衡分析 范围管理 ★★时间管理 ★★★★概述前导图法 PDM(单代号网络图)箭线图法 ADM(双代号网络图) 了解关键路径法总时差自由时差 甘特图 成本管理 ★挣值管理概述指数计算 软件质…...

Spring Boot基础

项目创建 项目启动 请求响应 RestController 1.返回值处理 RestController:这个注解结合了Controller和ResponseBody的功能。它默认将所有处理请求的方法的返回值直接作为响应体内容返回,主要用于构建RESTful API。返回的数据格式通常是JSON或XML&…...

C语言 | Leetcode C语言题解之第402题移掉K位数字

题目&#xff1a; 题解&#xff1a; char* removeKdigits(char* num, int k) {int n strlen(num), top 0;char* stk malloc(sizeof(char) * (n 1));for (int i 0; i < n; i) {while (top > 0 && stk[top] > num[i] && k) {top--, k--;}stk[top]…...

使用Visual Studio Code配置C/C++开发环境的全面指南

目录 引言 一、准备工作 1. 安装Visual Studio Code 2. 安装C/C编译器 3. 配置环境变量&#xff08;仅Windows用户&#xff09; 二、在VS Code中安装C/C扩展 三、创建您的第一个C/C项目 1. 创建项目文件夹 2. 打开项目文件夹 3. 创建源文件 四、配置任务&#xff08;…...

算法练习题26——多项式输出(模拟)

输入格式 输入共有 2 行 第一行 1 个整数&#xff0c;n&#xff0c;表示一元多项式的次数。 第二行有 n1 个整数&#xff0c;其中第 i 个整数表示第 n−i1 次项的系数&#xff0c;每两个整数之间用空格隔开。 输出格式 输出共 1 行&#xff0c;按题目所述格式输出多项式。…...

卷积神经网络经典模型架构简介

【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 《PyTorch深度学习与企业级项目实战&#xff08;人工智能技术丛书&#xff09;》(宋立桓&#xff0c;宋立林)【摘要 书评 试读】- 京东图书 (jd.com) ImageNet是一个包含超过1 500万幅手工标记的高分辨率图像的数据…...

【Kubernetes】常见面试题汇总(十三)

目录 39.简述 Kubernetes Scheduler 使用哪两种算法将 Pod 绑定到 worker 节点&#xff1f; 40.简述 Kubernetes kubelet 的作用&#xff1f; 41.简述 Kubernetes kubelet 监控 Worker 节点资源是使用什么组件来实现的&#xff1f; 39.简述 Kubernetes Scheduler 使用哪两种算…...

嵌入式QT开发:构建高效智能的嵌入式系统

摘要&#xff1a; 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发&#xff0c;详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程&#xff0c;包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面…...

Linux抢占调度

目录 抢占流程 抢占时机 用户态抢占时机 1、 从系统调用返回用户空间 2、 从中断返回用户空间 内核态抢占时机 1、中断处理程序返回内核空间 可以看到最终是到了 preempt_schedule_irq 2、当内核从non-preemptible&#xff08;禁止抢占&#xff09;状态变成pr…...

k8s中,为什么把pod的服务以deployment的形式通过nodeport对外发布,以及容器和虚拟机的一些区别

deployment是个控制器 主要负责管理pod&#xff0c;来代表k8s集群向外提供稳定的服务。 说&#xff0c;k8s有很多优点。 说k8s的优点&#xff0c;可能先需要说容器提供的便利。 同样的硬件资源 跑几个虚拟机&#xff0c;每个虚拟机上跑几个服务。 就挺重了。风扇呼呼叫 …...

PMP--一模--解题--41-50

文章目录 14.敏捷--方法--回顾--回顾是最重要的一个实践&#xff0c;原因是它能让团队学习、改进和调整其过程。41、 [单选] 新项目中的所有团队成员都希望通过尽快交付价值来获得客户的信任。项目经理了解到一个资源已经在其他项目中与发起人一起工作。某资源似乎在使用个人影…...

Kafka启动关闭及其相关命令kafka启动、状态监控、日常操作

开启zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh start 关闭zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh stop Kafka启动命令(备注:先进入kafka目录) 常规模式启动kafka bin/kafka-server-start.sh config/server.properties 进程守…...

CentOS 系统设置与维护教程

CentOS 系统设置与维护教程 在这篇博客中&#xff0c;我们将介绍在 CentOS 系统上进行的一些常见操作&#xff0c;包括停止和禁用防火墙服务、配置 SELinux。我们还将展示如何切换到 root 用户以执行这些操作。通过这些操作&#xff0c;你可以更好地管理和配置你的 CentOS 环境…...

流量牵引技术与传统防火墙的区别

在网络安全领域&#xff0c;流量牵引技术和传统防火墙都起着重要的作用&#xff0c;但它们在很多方面存在着明显的区别。 一、工作原理不同 传统防火墙主要是通过设置访问控制规则来过滤网络流量。它基于预先设定的策略&#xff0c;对进入和离开网络的数据包进行检查&#xf…...

【Python爬虫系列】_020.异步协程asyncio

课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈…...

ubuntu22安装docker

1、查看服务器系统信息 uname -a&#xff1a;显示内核名称、主机名、内核版本、处理器类型等信息。 lsb_release -a&#xff1a;显示有关 Ubuntu 发行版的详细信息&#xff0c;包括版本号、代号等。 free -h&#xff1a;查看系统内存使用情况。 df -h&#xff1a;查看磁盘空间使…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装&#xff08;Encapsulation&#xff09; 定义&#xff1a;将数据&#xff08;属性&#xff09;和操作数据的方法绑定在一起&#xff0c;通过访问控制符&#xff08;private、protected、public&#xff09;隐藏内部实现细节。示例&#xff1a; public …...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...