• 解决mysql去掉字段空格:中间空格,左侧空格,右侧空格,两端空格,水平制表符(tab键或者\t)空格,换行键(\n)空格,回车键(Enter键)空格


    1. 复现错误


    今天,查看我禅道上的日志,发现有这个错误:

    在这里插入图片描述

    数据库查询处的字段,存在空格,那么,怎么解决这个问题呢?

    2. 解决思路

    1. 首先打开控制台,查看所调用的接口。

    2. 通过接口找到对应的数据表。

    由于数据表是公司所用,暂不能写入到博客中,我单独创建数据表来演示。

    表的创建代码如下:

    CREATE TABLE `class`  (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
      `no` int(11) NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 3;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    按如下方式添加两条测试数据:

    
    mysql> INSERT INTO `class`(`name`,`NO`) VALUES ('六 年 级', 20060);
    
    Query OK, 1 row affected (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    mysql> INSERT INTO `class`(`name`,`NO`) VALUES ('七年级', 20061);
    
    Query OK, 1 row affected (0.01 sec)
    
    • 1
    • 2
    • 3

    第一条数据的六 年 级存在空格,通过如下SQL查询,来验证是否存在空格:

    mysql> select * from class where name like '% %';
    +----+----------+-------+
    | id | name     | no    |
    +----+----------+-------+
    |  1 | 六 年 级 | 20060 |
    +----+----------+-------+
    1 row in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3. 解决问题


    因为六 年 级是中间包含空格,可以使用replace去除空格,如下代码所示:

    mysql> update `class` set `name`=replace(`name`,' ','') where name like '% %';
    
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    • 1
    • 2
    • 3
    • 4

    Query OK, 0 rows affected (0.00 sec)表示已成功执行。

    使用如下SQL查询,再次验证是否执行成功:

    mysql> select * from class;
    +----+--------+-------+
    | id | name   | no    |
    +----+--------+-------+
    |  1 | 六年级 | 20060 |
    |  2 | 七年级 | 20061 |
    +----+--------+-------+
    2 rows in set (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4. 重要补充


    上述是去除中间空格,如下为去除其他空格。

    1. ltrim去除左侧空格
    update 表名 set 字段名=ltrim(字段名) 
    
    • 1
    1. rtrim是去除右侧空格
    update 表名 set 字段名=rtrim(字段名) 
    
    • 1
    1. trim是去除两端空格
    update 表名 set 字段名=trim(字段名) 
    
    • 1
    1. 如果excel导表,不小心产生了空格,如下方法解决
    update
        `表名`
    set
        字 段 名 = replace(
            replace(replace(字 段 名, char(9), ''), char(10), ''),
            char(13),
            ''
        );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • char(9):水平制表符 (tab键 或者 \t
    • char(10):换行键 (\n
    • char(13):回车键 (Enter键)
  • 相关阅读:
    CSS从入门到精通——动画:CSS3动画延迟和完成后状态的保持
    【C++】继承与多态相关11道面试题整理
    中南林业科技大学Java实验报告九:内部类和异常类
    【Linux】——使用xshell在Linux上安装JDK、Tomcat及验证部署
    LeetCode 310 周赛
    领域驱动设计:从后端到前端
    SpringBoot统一返回处理和全局异常处理
    【UCIe】UCIe 相关术语名词缩写释义
    给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
    有关神经网络的训练算法,人工神经网络优化算法
  • 原文地址:https://blog.csdn.net/lvoelife/article/details/133674285