MySQL特殊字符查询

在MySQL查询中,例如t1表,如果需要查询返回所有info列中包含字符’/'的行,可以如何编写查询语句?注意方式可能不止一种

在MySQL中,查询表t1info列包含字符/的所有行,可以使用以下多种方法:

方法 1:使用 LIKE 模糊匹配

SELECT * FROM t1 WHERE info LIKE '%/%';
  • 原理LIKE 用于模式匹配,% 表示任意字符(包括空字符)。%/% 匹配任何位置包含 / 的字符串。

方法 2:使用 LOCATE 函数

SELECT * FROM t1 WHERE LOCATE('/', info) > 0;
  • 原理LOCATE 返回子字符串在字符串中的起始位置。若返回值大于 0,说明 / 存在于 info 中。

方法 3:使用 INSTR 函数

SELECT * FROM t1 WHERE INSTR(info, '/') > 0;
  • 原理INSTRLOCATE 功能类似,但参数顺序相反(INSTR(原字符串, 子字符串))。

方法 4:使用正则表达式 REGEXP

SELECT * FROM t1 WHERE info REGEXP '/';
  • 原理REGEXP 通过正则表达式匹配,直接检查 / 是否存在。

方法 5:通过长度变化判断(间接方法)

SELECT * FROM t1 
WHERE CHAR_LENGTH(REPLACE(info, '/', '')) < CHAR_LENGTH(info);
  • 原理:若替换掉 / 后字符串长度变短,说明原字符串包含 /

总结

  • 推荐使用 LIKEREGEXP:简洁直观,适用于简单场景。
  • 性能考虑:所有方法均需全表扫描(除非使用全文索引),但 LIKE '%/%'REGEXP 的效率可能略低于 LOCATE/INSTR(因正则表达式复杂度)。
  • 选择依据:根据代码可读性、习惯或数据库版本特性灵活选择。

在 MySQL 的 LIKE 语法中,如果需要在字符串中匹配特殊字符 \%,需要使用 转义符(默认是 \)来取消它们的特殊含义。以下是具体写法:


以like语法为例,若字符换为\或%,语句如何编写

1. 匹配字符 \(反斜杠)

由于 \ 是 MySQL 的默认转义符,需要双重转义:

-- 匹配 info 列包含 \ 的行
SELECT * FROM t1 WHERE info LIKE '%\\\\%';
  • 原理
    • MySQL 字符串中的 \\ 会被解析为单个 \
    • LIKE 中的 \\\\ 实际表示匹配单个 \(第一个 \\ 是字符串转义,第二个 \\LIKE 模式转义)。

2. 匹配字符 %(百分号)

%LIKE 的通配符,需用 \ 转义:

-- 匹配 info 列包含 % 的行
SELECT * FROM t1 WHERE info LIKE '%\%%';
  • 原理
    • \% 表示匹配字面值的 %
    • 两端的 % 是通配符,表示允许前后有其他字符。

3. 同时匹配 \%

-- 匹配 info 列同时包含 \ 和 % 的行
SELECT * FROM t1 
WHERE info LIKE '%\\\\%%\%%';
  • 分解:
    • %\\\\% 匹配包含 \
    • %\%% 匹配包含 %

4. 自定义转义符(可选)

如果默认的 \ 转义符不够直观,可以用 ESCAPE 关键字指定其他转义符:

-- 使用 $ 作为转义符
SELECT * FROM t1 
WHERE info LIKE '%$%%' ESCAPE '$';  -- 匹配 %
  • 此例中 $% 表示字面值的 %

总结

场景写法示例关键点
匹配 \LIKE '%\\\\%'双重转义
匹配 %LIKE '%\%%'\ 转义 %
自定义转义符LIKE '%$%%' ESCAPE '$'显式声明转义符更清晰

如果字段中包含大量特殊字符,建议优先使用 REGEXP(正则表达式)或 INSTR 等函数,可避免复杂的转义逻辑。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DeepSeek】5分钟快速实现本地化部署教程

一、快捷部署 &#xff08;1&#xff09;下载ds大模型安装助手&#xff0c;下载后直接点击快速安装即可。 https://file-cdn-deepseek.fanqiesoft.cn/deepseek/deepseek_28348_st.exe &#xff08;2&#xff09;打开软件&#xff0c;点击立即激活 &#xff08;3&#xff09;选…

mac本地安装运行Redis-单机

记录一下我以前用的连接服务器的跨平台SSH客户端。 因为还要准备毕设...... 服务器又过期了&#xff0c;只能把redis安装下载到本地了。 目录 1.github下载Redis 2.安装homebrew 3.更新GCC 4.自行安装Redis 5.通过 Homebrew 安装 Redis 安装地址&#xff1a;https://git…

GCC RISCV 后端 -- GCC Passes 注释

在前面文章提到&#xff0c;当GCC 前端完成对C源代码解析完成后&#xff0c;就会使用 处理过程&#xff08;Passes&#xff09;机制&#xff0c;通过一系列的处理过程&#xff0c;将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示&#xff1a; 此…

OSPF的各种LSA类型,多区域及特殊区域

一、OSPF的LSA类型 OSPF&#xff08;开放最短路径优先&#xff09;协议使用多种LSA&#xff08;链路状态通告&#xff09;类型来交换网络拓扑信息。以下是主要LSA类型的详细分类及其作用&#xff1a; 1. Type 1 LSA&#xff08;路由器LSA&#xff09; 生成者&#xff1a;每个…

UV,纹理,材质,对象

先上代码&#xff1a; Shader "Unlit/MyFirstShder" {Properties{_MainTex ("Texture", 2D) "white" {}}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex …

ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)

1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发&#xff0c;无espidf框架&#xff0c;因此无法直接烧录程序&#xff0c;配置开发板参数如下&#xff1a; 在platformio.ini文件中&#xff0c;配置使用esp32-s3-devkitc-1开发…

JavaSE-5 类和对象

一、什么是面向对象&#xff0c;什么是面向过程 面向过程 面向过程是一种以过程为中心的编程思想&#xff0c;它将一个复杂的问题分解为一系列的步骤&#xff0c;每个步骤用一个函数&#xff08;或过程&#xff09;来实现&#xff0c;然后按照一定的顺序依次调用这些函数&…

Redis|Springboot集成Redis

文章目录 总体概述本地Java连接Redis常见问题集成Jedis集成lettuce集成RedisTemplate——推荐使用连接单机连接集群 总体概述 jedis-lettuce-RedisTemplate三者的联系 jedis第一代lettuce承上启下redistemplate着重使用 本地Java连接Redis常见问题 bind配置请注释掉保护模式…

计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

基于单片机及传感器的机器人设计与实现

摘要 : 本设计基于单片机及多种传感器 , 完成了一个自主式移动机器人的制作。单片机作为系统检测和控制的核心 , 实现对机器人小车的智能控制。反射式红外光电传感器检测引导线, 使机器人沿轨道自主行走 ; 使用霍尔集成片 , 通过计车轮转过的圈数完成机器人行走路程测量; …

VBA 列方向合并单元格,左侧范围大于右侧范围

实现功能如下&#xff1a; excel指定行列范围内的所有单元格 规则1&#xff1a;每一列的连续相同的值合并单元格 规则2&#xff1a;每一列的第一个非空单元格与其下方的所有空白单元格合并单元 规则3&#xff1a;优先左侧列合并单元格&#xff0c;合并后&#xff0c;右侧的单元…

docker中kibana启动后,通过浏览器访问,出现server is not ready yet

问题&#xff1a;当我在浏览器访问kibana时&#xff0c;浏览器给我报了server is not ready yet. 在网上试了很多方法&#xff0c;都未能解决&#xff0c;下面是我的方法&#xff1a; 查看kibana日志&#xff1a; docker logs -f kibana从控制台打印的日志可以发现&#xff…

Lora模型微调(1): 原理讲解

1. 参数高效微调介绍 参数高效微调(Parameter-Efficient Fine-Tuning, PEFT) 是一种在深度学习模型微调过程中,通过仅更新少量参数来适应新任务的技术。这种方法在保持模型性能的同时,显著减少了计算资源和存储需求,特别适用于大模型(如 GPT、BERT 等)的微调场景。 PE…

【国产Linux | 银河麒麟】麒麟化龙——KylinOS下载到安装一条龙服务,起飞!

&#x1f5fa;️博客地图 &#x1f4cd;一、下载地址 &#x1f4cd;二、 系统安装 本文基于Windows操作系统vmware虚拟机安装 一、下载地址 官网&#xff1a;产品试用申请国产操作系统、麒麟操作系统——麒麟软件官方网站 下载自己需要的版本&#xff0c;完成后&#xff0c…

MySQL(单表)知识点

文章目录 1.数据库的概念2.下载并配置MySQL2.1初始化MySQL的数据2.2注册MYSQL服务2.3启动MYSQL服务2.4修改账户默认密码2.5登录MYSQL2.6卸载MYSQL 3.MYSQL数据模型3.1连接数据库 4.SQL简介4.1SQL的通用语法4.2SQL语句的分类4.3DDL语句4.3.1数据库4.3.2表(创建,查询,修改,删除)4…

解析 SQL,就用 sqlparse!

文章目录 解析 SQL&#xff0c;就用 sqlparse&#xff01;一、背景&#xff1a;为什么你需要 sqlparse&#xff1f;二、什么是 sqlparse&#xff1f;三、如何安装 sqlparse&#xff1f;四、简单易用的库函数1\. parse(sql)2\. format(sql, **options)3\. split(sql)4\. get_typ…

C++vector类

目录 一、vector的使用 1.1、vector的构造&#xff0c;push_back&#xff0c;和 [ ]运算符 1.2、迭代器和范围for 1.3、vector> 和 sort 算法 二、vector的实现 2.1、成员变量 2.2、构造函数&#xff0c;析构函数&#xff0c;赋值重载 ​编辑 2.3、push_back&#x…

模拟调制技术详解

内容摘要 本文系统讲解模拟调制技术原理及Matlab实现&#xff0c;涵盖幅度调制的四种主要类型&#xff1a;双边带抑制载波调幅&#xff08;DSB-SC&#xff09;、含离散大载波调幅&#xff08;AM&#xff09;、单边带调幅&#xff08;SSB&#xff09;和残留边带调幅&#xff08;…

Android APP 启动流程详解(含冷启动、热启动)

目录 一、流程对比图 二、冷启动&#xff08;Cold Launch&#xff09; 2.1 用户点击应用图标&#xff08;Launcher 触发&#xff09; 2.2 AMS 处理启动请求 2.3 请求 Zygote 创建新进程 2.4 初始化应用进程 2.5 创建 Application 对象 2.6 启动目标 Activity 2.7 执行 …

前端项目中export和import的作用

之前写过代码&#xff0c;但是那个时候是使用jspdivcss写页面&#xff0c;jquery负责页面数据展示和数据请求。近期在学习前端&#xff0c;发现有export和import&#xff0c;想起了之前没用过&#xff0c;就研究搜索了一下&#xff0c;发现这个是在 ES6中添加的&#xff0c;难怪…