【Oracle】空格单字符通配符查询匹配失败

news2024/12/23 19:08:43

问题

在这里插入图片描述
在进行模糊查询的时候,通过全局任意字符串匹配出含有两个字刘姓的人,但是通过刘_不能匹配出结果。

解决

在这里插入图片描述
检查后发现,姓名中包含空格

SELECT * FROM student WHERE TRIM(sname) LIKE '刘_';

第一种解决方案就是查询的时候进行去空格处理,但是一般情况下我们是不知道原数据中是否存在,但是插入数据的时候并没有空格,那么在存储的时候为什么会加入空格呢?
在这里插入图片描述
于是我想到数据类型定义,在Oracle数据库中,CHAR 和 VARCHAR2 是用于存储字符数据的两种不同数据类型,它们之间有几个关键区别:

存储方式

  • CHAR:固定长度的字符数据类型。无论实际存储的字符串长度是多少,都会占用定义时指定的长度。例如,如果定义一个 CHAR(10) 列,存储一个 5 个字符的字符串时,Oracle 会使用 10 个字符的空间来存储这个字符串,其余部分用空格填充。
  • VARCHAR2:可变长度的字符数据类型。只有实际存储的字符串所需的长度会被使用。例如,如果定义一个 VARCHAR2(10) 列,存储一个 5 个字符的字符串时,只会占用 5 个字符的空间。

效率和性能

  • CHAR:在固定长度的情况下,CHAR 可以在某些特定场景下提高性能(如对大量相同长度字符串的处理),但由于其会填充空格,可能会导致存储效率低下。
  • VARCHAR2:通常更节省存储空间,并且在大多数场景下性能优于 CHAR。适合存储长度变化较大的字符串。

空格处理

  • CHAR:当使用 CHAR 数据类型时,在存储过程中多余的空格会被保留。在查询时,如果有必要,Oracle会自动对字符进行填充对齐。
  • VARCHAR2:不会存储多余的空格。在查询时,实际的存储内容会返回,不会有填充。

最大长度限制

  • 在Oracle 12c及之前,CHAR 和 VARCHAR2 的最大存储长度为 2000 字符(对于 VARCHAR2 也可以设置为 4000 字节,取决于字符集)。在Oracle 12c及以后的版本中,VARCHAR2 的最大长度可以扩展到 32,767 字符(在使用 MAX 选项时)。
    在这里插入图片描述
    sname改为varchar2,同时新插入两条数据,再次查看数据:
    在这里插入图片描述
    综上,数据类型在定义时需要有一定的考虑

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

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

相关文章

查看多个通道32bit音频pcm数据

本文分析一个32位多通道pcm数据,一方面简单解释一下pcm数据格式,另外一方面看清楚实际数据的精度是多少。 说明:这是一个alsa采集到的10路32bit的pcm数据。 使用bc打开,16进制数据显示如下图: 图中左边是一个10通道32…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割! 文章目录 【语义分割|代码解析】CMTFNet-2: …

Webpack 配置module.css报错Uncaught TypeError: Cannot read properties of undefined

我的项目结构如下: 入口文件是index.jsx,组件Button.jsx使用了样式button.module.css .btn {background-color: #4CAF50;border: none;color: white; padding: 15px 32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin:…

Redis(2):内存模型

一、Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后(后面如无特殊说明,客户端一律使用redis-cli),通过info命令可以查看内存使用情…

Docker打包自己项目推到Docker hub仓库(windows10)

一、启用Hyper-V和容器特性 1.应用和功能 2.点击程序和功能 3.启用或关闭Windows功能 4.开启Hyper-V 和 容器特性 记得重启生效!!! 二、安装WSL2:写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/143057041 三…

python如何安装扩展包

1、扩展包 Python安装额外的扩展包,一般使用anconda进行管理。 1、1安装命令 一般我们在anconda中通过pip install 包名 的方式进行安装,不过由于这些包在国外下载,因此需要配置合适的镜像促使其下载更快。 1、2 镜像源配置 1、2、1 一次…

【风冷换热器设计及计算

某空气调节工程需要将33.3kg/s的空气,由干球温度t123℃、相对湿度ψ160%,冷却到干球温度t212℃、相对湿度ψ290%,冷凝器出口为40℃的饱和液体,制冷剂采用R22,试设计一台直接蒸发式空气冷却器。 …

LabVIEW程序员赚钱不仅限于上班

LabVIEW程序员拥有多种途径来实现财富增值,而不仅仅局限于传统的全职工作。以下是一些他们可以利用自身技能和专业知识实现更高财务收益的方法: 1. 专注领域的自由职业与合同工作 制造、科研、医疗技术等行业都需要LabVIEW的专业知识。通过自由职业&…

C++ shared_ptr 动态内存

C shared_ptr 动态内存 智能指针 为了更加容易的使用动态内存,新的标准库提供了智能指针,用来管理动态对象,智能指针的行为类似常规指针,重要的区别是他负责自动释放所指的对象。新标准库提供的智能指针的区别在于管理底层指针的…

动态代理:面向接口编程,屏蔽RPC处理过程

RPC远程调用 使用 RPC 时,一般的做法是先找服务提供方要接口,通过 Maven把接口依赖到项目中。在编写业务逻辑的时候,如果要调用提供方的接口,只需要通过依赖注入的方式把接口注入到项目中,然后在代码里面直接调用接口…

Spring Boot:打造动态定时任务,开启灵活调度之旅

一、描述 在 Spring Boot 中设置动态定时任务是一种非常实用的功能,可以根据实际需求在运行时动态地调整定时任务的执行时间、频率等参数。以下是对 Spring Boot 设置动态定时任务的简单介绍: 1、传统定时任务的局限性 在传统的 Spring Boot 定时任务…

Chrome与夸克谁更节省系统资源

在当今数字化时代,浏览器已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都依赖于浏览器来访问互联网。然而,不同的浏览器在性能和资源消耗方面存在差异。本文将探讨Chrome和夸克两款浏览器在系统资源消耗方面的表现…

react的antd-mobile使用Steps显示物流

antd-mobile的图标,是需要安装依赖的 step如果只有一个步骤是不会展示的,代码里面的标题那块可以看出来 尝试了很多遍测试发现一直不显示,查询后发现是这个组件的本身设置的原因 那么就算你只展示一个那么也要写两个step,第二个…

AI-基本概念-多层感知器模型/CNN/RNN/自注意力模型

1 需求 神经网络 …… 深度学习 …… 深度学习包含哪些神经网络: 全连接神经网络卷积神经网络循环神经网络基于注意力机制的神经网络 2 接口 3 CNN 在这个示例中: 首先定义了一个简单的卷积神经网络SimpleCNN,它包含两个卷积层、两个池…

链表详解(一)

目录 顺序表的问题及思考链表链表的概念及结构链表的分类单链表的实现链表功能实现遍历链表void SLTprint(SLNode* phead)代码 创造新节点SLNode* CreateNode(SLNDataType x)代码 顺序表的问题及思考 中间/头部的插入删除,时间复杂度为O(N),效率低,但是尾部插入效率…

【MongoDB】Windows/Docker 下载安装,MongoDB Compass的基本使用、NoSQL、MongoDB的基础概念及基础用法(超详细)

文章目录 Windows下载MongoDB Compass使用NoSQL的基本概念MongoDB常用术语MongoDB与RDBMS区别MongoDB的CRUD 更多相关内容可查看 Docker安装MongoDB可查看:Docker-安装MongoDB Windows下载 官网下载地址:https://www.mongodb.com/try/download/communi…

uni-app发起请求以及请求封装,上传及下载功能(六)

文章目录 一、发起网络请求1.使用及封装2. https 请求配置自签名证书3.拦截器 二、上传下载1.上传 uni.uploadFile(OBJECT)2. 下载 uni.downloadFile(OBJECT) 一、发起网络请求 uni-app中内置的uni.request()已经很强大了,简单且好用。为了让其更好用,同…

C语言 | Leetcode C语言题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; int countArrangement(int n) {int f[1 << n];memset(f, 0, sizeof(f));f[0] 1;for (int mask 1; mask < (1 << n); mask) {int num __builtin_popcount(mask);for (int i 0; i < n; i) {if (mask & (1 <<…

《Baichuan-Omni》论文精读:第1个7B全模态模型 | 能够同时处理文本、图像、视频和音频输入

技术报告Baichuan-Omni Technical ReportGitHub仓库地址 文章目录 论文摘要1. 引言简介2. 训练2.1. 高质量的多模态数据2.2. 多模态对齐预训练2.2.1. 图像-语言分支2.2.2. 视频语音分支2.2.3. 音频语言分支2.2.4. 图像-视频-音频全方位对齐 2.3. 多模态微调监督 3. 实验3.1. 语…

Cesium着色器

GLSL&#xff08;OpenGL Shading Language&#xff09;是用于编写着色器的语言 着色器类型 顶点着色器&#xff1a;负责处理每个顶点的属性&#xff0c;如位置、颜色等。片段着色器&#xff08;或像素着色器&#xff09;&#xff1a;负责计算最终像素的颜色。 <!DOCTYPE h…