在mysql中动态生成sql语句去掉所有字段的空格
在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况。其中,去掉字段中的空格是一项常见的操作。当表中的字段数量较少时,我们可以手动编写 update
语句来处理。但如果表中包含大量字段,手动操作就会变得繁琐且容易出错。这时,借助mysql的系统表动态生成sql语句就显得尤为高效。本文将详细介绍如何在mysql中动态生成sql语句来去掉所有字段的空格。
准备工作
假设我们有一个名为 lcsncldljyxztjb_all
的表,其表结构如下:
create table `lcsncldljyxztjb_all` ( `id` char(36) not null comment 'id', `sf` varchar(64) default null comment '省', `sj` varchar(64) default null comment '市', `xj` varchar(64) default null comment '县', `sz` varchar(64) default null comment '乡镇', `csq` varchar(64) default null comment '村/社区', `cjmxz` varchar(128) default null comment '村(居)民小组', `bz` varchar(64) default null comment '备注', `mz` varchar(32) default null comment '民族', primary key (`id`) ) engine=innodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci comment='汇总表';
我们的目标是去掉该表中所有字段的空格。
原理分析
mysql的 information_schema.columns
系统表存储了数据库中所有表的列信息。我们可以通过查询这个系统表,获取指定表的所有字段名以及数据类型。然后,利用 concat
函数将这些字段名拼接成我们需要的 update
语句。在拼接过程中,对于 varchar
和 char
类型的字段,使用 replace
函数将字段中的空格替换为空字符串。
动态生成sql语句
select concat('update lcsncldljyxztjb_all set ', column_name, ' = replace(', column_name, ', \' \', \'\');') from information_schema.columns where table_schema = database() and table_name = 'lcsncldljyxztjb_all' and data_type in ('varchar', 'char');
上述查询语句的详细解释如下:
concat('update lcsncldljyxztjb_all set ', column_name, ' = replace(', column_name, ', \' \', \'\');')
:这部分使用
将动态生成的结果复制到查询里面进行运行:
到此这篇关于mysql中动态生成sql语句去掉所有字段的空格的文章就介绍到这了,更多相关mysql去掉所有字段的空格内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论