码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mysql查询去空格方法汇总


    目录

    一、背景

    二、方法

    1、trim()、ltrim()、rtrim()函数

    (1)trim()去除字段首尾空白字符,也可以去除指定字符

    (2)ltrim()去除左空格

    (3)rtrim()去除右空格

    2、replace()函数

    3、convert()函数配合trim()函数(解决了我的问题)


    一、背景

            最近系统线上数据库数据出现一个问题,发现某些字段存在一些异常的首尾空格,不管是使用trim对比还是like查询都查询不到具体的数据;在网上找了一些方法,最后发现一个去“不间断空格”的方法解决了问题,在这里做一下记录和汇总。

    二、方法

    1、trim()、ltrim()、rtrim()函数

    语法:trim(字段)  ||  trim([{BOTH | LEADING | TRAILING} [指定字符] FROM] 字段)

    (1)trim()去除字段首尾空白字符,也可以去除指定字符

    列子:去除商品零件号左右空格,以及指定字符,打印去除字符后的长度

    1. select
    2. p.parts_num as "零件号(包含首尾各3个空格)",
    3. length(p.parts_num) as "原始长度",
    4. trim(p.parts_num),
    5. length(trim(p.parts_num)) as "去除左右空格后长度",
    6. trim(leading ' 7' from p.parts_num),
    7. length(trim(leading ' 7' from p.parts_num)) as "去除左边字符后长度",
    8. trim(trailing '7 ' from p.parts_num),
    9. length(trim(trailing '7 ' from p.parts_num)) as "去除右边字符后长度"
    10. from
    11. product p
    12. where
    13. p.product_id = "1941573845271945216";

    结果:

    (2)ltrim()去除左空格

    1. select
    2. p.parts_num as "零件号(包含首尾各3个空格)",
    3. length(p.parts_num) as "原始长度",
    4. ltrim(p.parts_num),
    5. length(ltrim(p.parts_num)) as "去除左空格后长度"
    6. from
    7. product p
    8. where
    9. p.product_id = "1941573845271945216";

    结果:

    (3)rtrim()去除右空格

    1. select
    2. p.parts_num as "零件号(包含首尾各3个空格)",
    3. length(p.parts_num) as "原始长度",
    4. rtrim(p.parts_num),
    5. length(rtrim(p.parts_num)) as "去除右空格后长度"
    6. from
    7. product p
    8. where
    9. p.product_id = "1941573845271945216";

    结果:

    2、replace()函数

    语法:replace(object,search,replace)

    (1)替换字段中指定字符为新字符

    1. select
    2. p.parts_num as "零件号(包含首尾各3个空格)",
    3. length(p.parts_num) as "原始长度",
    4. replace(p.parts_num, ' ', ''),
    5. length(replace(p.parts_num, ' ', '')) as "替换空格后长度",
    6. replace(p.parts_num, '7', '8') as "把7替换成8"
    7. from
    8. product p
    9. where
    10. p.product_id = "1941573845271945216";

    结果:

    (2)指定去除一下特殊字符

    水平制表符:CHAR(9)、换行符:CHAR(10)、回车符:CHAR(13)

    REPLACE(REPLACE(REPLACE(p.parts_num, CHAR(9), ''), CHAR(10), ''), CHAR(13), '')

    3、convert()函数配合trim()函数(解决了我的问题)

    (1)使用convert()先转换一些特殊编码的空格(unicode码位u+00a0的utf-8编码,也称为不间断空格)转换成常规空格(ASCII 中编码为0x20)

    1. -- convert转换,trim去除
    2. select TRIM(convert(0xC2A0 using utf8mb4) FROM p.parts_num);
    3. -- 替换掉字符中的不间断空格
    4. select TRIM(REPLACE(p.parts_num, convert(0xC2A0 using utf8mb4), ' '));

    这些特殊空格一般常见于各文本编辑器(word、Excel等,刚好出现问题的业务存在Excel导入数据的场景),想要详细了解看下面推荐的文章。

    发现一篇有关各种空格的介绍文章,很全面,推荐一下:你不知道的空格 - 走看看

  • 相关阅读:
    旁门左道:借助 HttpClientHandler 拦截请求,体验 Semantic Kernel 插件
    万字长文带你学习ElasticSearch
    java计算机毕业设计高校校园社交网络源程序+mysql+系统+lw文档+远程调试
    DBC文件解析成C语言
    字节新鲜面经
    JoySSL-新兴国产品牌数字证书
    C#(三十二)之Windows绘图
    Hall定理(霍尔定理)证明及推广
    打开网站显示“不安全”怎么办?
    机器学习中的 K-均值聚类算法及其优缺点。
  • 原文地址:https://blog.csdn.net/Conquer__EL/article/details/126656136
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号