MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句

文章目录

  • 实际需求
  • 分析思路
  • 写拼接 SQL 脚本的脚本语句
  • 执行得到脚本语句
  • 保存成 SQL 脚本文件

实际需求

有些行政区域的字段 area_fullname 是空的,如何补全呢?如下所示:
在这里插入图片描述

分析思路

(一)如何取到每个区域的上级名称和上上级名称?
区域编码有规律,末尾有2个0的是上级,末尾有3个0 的是上上级,从而可以通过截取字符串、拼接字符串、关联子查询来得到。

(二)用到哪些技术点?

  1. 截取字符串函数
  2. 拼接字符串函数
  3. 空值转换函数
  4. 关联子查询
上级:(ifnull((select b.area_name from td_area_test b where b.area_code 
= concat(left(a.area_code,4),'00')),'')) superior上上级:(ifnull((select c.area_name from td_area_test c where c.area_code 
= concat(left(a.area_code,3),'000')),'')) superlative本级:a.area_name inferior

把 area_fullname 为空的区域的名称,上级名称,上上级名称查询出来,语句如下:

select a.area_code,a.area_name as inferior,
(ifnull((select b.area_name from td_area_test b 
where b.area_code = concat(left(a.area_code,4),'00')),'')) superior,
(ifnull((select c.area_name from td_area_test c 
where c.area_code = concat(left(a.area_code,3),'000')),'')) superlative 
from td_area_test a where a.area_fullname ='';

写拼接 SQL 脚本的脚本语句

批量生成 SQL 脚本语句的脚本语句如下:

select concat('update td_area_test set area_fullname = ''',(concat((ifnull((select c.area_name from td_area_test c
where c.area_code = concat(left(a.area_code,3),'000')),'')),(ifnull((select b.area_name from td_area_test b where
b.area_code = concat(left(a.area_code,4),'00')),'')),a.area_name)),''' where area_code = ''',a.area_code,''';')
sqlsentence from td_area_test a where a.area_fullname = '';

执行得到脚本语句

执行上述脚本语句后得到如下结果:

mysql> select concat('update td_area_test set area_fullname = ''',(concat((ifnull((select c.area_name from td_area_test c where c.area_code = concat(left(a.area_code,3),'000')),'')),(ifnull((select b.area_name from td_area_test b where b.area_code = concat(left(a.area_code,4),'00')),'')),a.area_name)),''' where area_code = ''',a.area_code,''';') sqlsentence from td_area_test a where a.area_fullname = '';
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| sqlsentence                                                                                                                                             |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
| update td_area_test set area_fullname = '内蒙古自治区赤峰市敖汉旗' where area_code = '150430';                                                          |
| update td_area_test set area_fullname = '锡林郭勒盟正蓝旗' where area_code = '152530';                                                                  |
| update td_area_test set area_fullname = '黑龙江省哈尔滨市香坊区' where area_code = '230110';                                                            |
| update td_area_test set area_fullname = '黑龙江省齐齐哈尔市克东县' where area_code = '230230';                                                          |
| update td_area_test set area_fullname = '黑龙江省伊春市五营区' where area_code = '230710';                                                              |
| update td_area_test set area_fullname = '上海市杨浦区' where area_code = '310110';                                                                      |
| update td_area_test set area_fullname = '上海市奉贤区' where area_code = '310120';                                                                      |
| update td_area_test set area_fullname = '上海市崇明县' where area_code = '310230';                                                                      |
| update td_area_test set area_fullname = '江苏省淮安市盱眙县' where area_code = '320830';                                                                |
| update td_area_test set area_fullname = '浙江省杭州市余杭区' where area_code = '330110';                                                                |
| update td_area_test set area_fullname = '罗津' where area_code = '342201';                                                                              |
| update td_area_test set area_fullname = '福建省三明市建宁县' where area_code = '350430';                                                                |
| update td_area_test set area_fullname = '江西省九江市彭泽县' where area_code = '360430';                                                                |
| update td_area_test set area_fullname = '江西省赣州市宁都县' where area_code = '360730';                                                                |
| update td_area_test set area_fullname = '江西省吉安市永新县' where area_code = '360830';                                                                |
| update td_area_test set area_fullname = '抚州市抚州市广昌县' where area_code = '361030';                                                                |
| update td_area_test set area_fullname = '抚州市上饶市婺源县' where area_code = '361130';                                                                |
| update td_area_test set area_fullname = '山东省济宁市汶上县' where area_code = '370830';                                                                |
| update td_area_test set area_fullname = '许昌市南阳市桐柏县' where area_code = '411330';                                                                |
| update td_area_test set area_fullname = '湖南省长沙市安居区' where area_code = '430185';                                                                |
| update td_area_test set area_fullname = '湖南省株洲市芦松区' where area_code = '430282';                                                                |
| update td_area_test set area_fullname = '湖南省常德市贺家山原种场' where area_code = '430782';                                                          |
| update td_area_test set area_fullname = '湖南省常德市德山开发区' where area_code = '430783';                                                            |
| update td_area_test set area_fullname = '湖南省常德市西湖管理区' where area_code = '430784';                                                            |
| update td_area_test set area_fullname = '湖南省常德市西洞庭管理区' where area_code = '430785';                                                          |
| update td_area_test set area_fullname = '湖南省益阳市大通湖区' where area_code = '430940';                                                              |
| update td_area_test set area_fullname = '郴州市怀化通道侗族自治县' where area_code = '431230';                                                          |
| update td_area_test set area_fullname = '郴州市怀化洪江区' where area_code = '431282';                                                                  |
| update td_area_test set area_fullname = '湘西土家族苗族自治州龙山县' where area_code = '433130';                                                        |
| update td_area_test set area_fullname = '广西壮族自治区桂林市平乐县' where area_code = '450330';                                                        |
| update td_area_test set area_fullname = '百色市百色市西林县' where area_code = '451030';                                                                |
| update td_area_test set area_fullname = '省直辖县级行政区划省直辖县级行政区划琼中黎族苗族自治县' where area_code = '469030';                            |
| update td_area_test set area_fullname = '重庆市万盛区' where area_code = '500110';                                                                      |
| update td_area_test set area_fullname = '重庆市丰都县' where area_code = '500230';                                                                      |
| update td_area_test set area_fullname = '重庆市石柱土家族自治县' where area_code = '500240';                                                            |
| update td_area_test set area_fullname = '阿坝藏族羌族自治州壤塘县' where area_code = '513230';                                                          |
| update td_area_test set area_fullname = '甘孜藏族自治州德格县' where area_code = '513330';                                                              |
| update td_area_test set area_fullname = '凉山彝族自治州金阳县' where area_code = '513430';                                                              |
| update td_area_test set area_fullname = '贵州省遵义市习水县' where area_code = '520330';                                                                |
| update td_area_test set area_fullname = '铜仁地区万山特区' where area_code = '522230';                                                                  |
| update td_area_test set area_fullname = '黔东南苗族侗族自治州台江县' where area_code = '522630';                                                        |
| update td_area_test set area_fullname = '黔南布依族苗族自治州龙里县' where area_code = '522730';                                                        |
| update td_area_test set area_fullname = '云南省昭通市水富县' where area_code = '530630';                                                                |
| update td_area_test set area_fullname = '红河哈尼族彝族自治州金平苗族瑶族傣族自治县' where area_code = '532530';                                        |
| update td_area_test set area_fullname = '大理白族自治州洱源县' where area_code = '532930';                                                              |
| update td_area_test set area_fullname = '日喀则地区仁布县' where area_code = '542330';                                                                  |
| update td_area_test set area_fullname = '那曲地区尼玛县' where area_code = '542430';                                                                    |
| update td_area_test set area_fullname = '陕西省宝鸡市凤县' where area_code = '610330';                                                                  |
| update td_area_test set area_fullname = '陕西省咸阳市淳化县' where area_code = '610430';                                                                |
| update td_area_test set area_fullname = '陕西省延安市宜川县' where area_code = '610630';                                                                |
| update td_area_test set area_fullname = '陕西省汉中市佛坪县' where area_code = '610730';                                                                |
| update td_area_test set area_fullname = '陕西省榆林市清涧县' where area_code = '610830';                                                                |
| update td_area_test set area_fullname = '克孜勒苏柯尔克孜自治州喀什地区巴楚县' where area_code = '653130';                                              |
+---------------------------------------------------------------------------------------------------------------------------------------------------------+
53 rows in set (0.01 sec)

保存成 SQL 脚本文件

上述生成的SQL 脚本语句直接从命令行复制粘贴到脚本文件中,要注意清除掉多余的符号 | ,然后在命令终端执行脚本文件即可,清理后如下:

update td_area_test set area_fullname = '内蒙古自治区赤峰市敖汉旗' where area_code = '150430';                                                          
update td_area_test set area_fullname = '锡林郭勒盟正蓝旗' where area_code = '152530';                                                                  
update td_area_test set area_fullname = '黑龙江省哈尔滨市香坊区' where area_code = '230110';                                                           
update td_area_test set area_fullname = '黑龙江省齐齐哈尔市克东县' where area_code = '230230';                                                          
update td_area_test set area_fullname = '黑龙江省伊春市五营区' where area_code = '230710';                                                              
update td_area_test set area_fullname = '上海市杨浦区' where area_code = '310110';                                                                      
update td_area_test set area_fullname = '上海市奉贤区' where area_code = '310120';                                                                      
update td_area_test set area_fullname = '上海市崇明县' where area_code = '310230';                                                                      
update td_area_test set area_fullname = '江苏省淮安市盱眙县' where area_code = '320830';                                                                
update td_area_test set area_fullname = '浙江省杭州市余杭区' where area_code = '330110';                                                                
update td_area_test set area_fullname = '罗津' where area_code = '342201';                                                                              
update td_area_test set area_fullname = '福建省三明市建宁县' where area_code = '350430';                                                                
update td_area_test set area_fullname = '江西省九江市彭泽县' where area_code = '360430';                                                                
update td_area_test set area_fullname = '江西省赣州市宁都县' where area_code = '360730';                                                                
update td_area_test set area_fullname = '江西省吉安市永新县' where area_code = '360830';                                                                
update td_area_test set area_fullname = '抚州市抚州市广昌县' where area_code = '361030';                                                                
update td_area_test set area_fullname = '抚州市上饶市婺源县' where area_code = '361130';                                                                
update td_area_test set area_fullname = '山东省济宁市汶上县' where area_code = '370830';                                                                
update td_area_test set area_fullname = '许昌市南阳市桐柏县' where area_code = '411330';                                                                
update td_area_test set area_fullname = '湖南省长沙市安居区' where area_code = '430185';                                                                
update td_area_test set area_fullname = '湖南省株洲市芦松区' where area_code = '430282';                                                                
update td_area_test set area_fullname = '湖南省常德市贺家山原种场' where area_code = '430782';                                                          
update td_area_test set area_fullname = '湖南省常德市德山开发区' where area_code = '430783';                                                            
update td_area_test set area_fullname = '湖南省常德市西湖管理区' where area_code = '430784';                                                            
update td_area_test set area_fullname = '湖南省常德市西洞庭管理区' where area_code = '430785';                                                          
update td_area_test set area_fullname = '湖南省益阳市大通湖区' where area_code = '430940';                                                              
update td_area_test set area_fullname = '郴州市怀化通道侗族自治县' where area_code = '431230';                                                          
update td_area_test set area_fullname = '郴州市怀化洪江区' where area_code = '431282';                                                                  
update td_area_test set area_fullname = '湘西土家族苗族自治州龙山县' where area_code = '433130';                                                        
update td_area_test set area_fullname = '广西壮族自治区桂林市平乐县' where area_code = '450330';                                                        
update td_area_test set area_fullname = '百色市百色市西林县' where area_code = '451030';                                                                
update td_area_test set area_fullname = '省直辖县级行政区划省直辖县级行政区划琼中黎族苗族自治县' where area_code = '469030';                            
update td_area_test set area_fullname = '重庆市万盛区' where area_code = '500110';                                                                      
update td_area_test set area_fullname = '重庆市丰都县' where area_code = '500230';                                                                      
update td_area_test set area_fullname = '重庆市石柱土家族自治县' where area_code = '500240';                                                            
update td_area_test set area_fullname = '阿坝藏族羌族自治州壤塘县' where area_code = '513230';                                                          
update td_area_test set area_fullname = '甘孜藏族自治州德格县' where area_code = '513330';                                                              
update td_area_test set area_fullname = '凉山彝族自治州金阳县' where area_code = '513430';                                                              
update td_area_test set area_fullname = '贵州省遵义市习水县' where area_code = '520330';                                                                
update td_area_test set area_fullname = '铜仁地区万山特区' where area_code = '522230';                                                                  
update td_area_test set area_fullname = '黔东南苗族侗族自治州台江县' where area_code = '522630';                                                        
update td_area_test set area_fullname = '黔南布依族苗族自治州龙里县' where area_code = '522730';                                                        
update td_area_test set area_fullname = '云南省昭通市水富县' where area_code = '530630';                                                                
update td_area_test set area_fullname = '红河哈尼族彝族自治州金平苗族瑶族傣族自治县' where area_code = '532530';                                        
update td_area_test set area_fullname = '大理白族自治州洱源县' where area_code = '532930';                                                              
update td_area_test set area_fullname = '日喀则地区仁布县' where area_code = '542330';                                                                  
update td_area_test set area_fullname = '那曲地区尼玛县' where area_code = '542430';                                                                    
update td_area_test set area_fullname = '陕西省宝鸡市凤县' where area_code = '610330';                                                                  
update td_area_test set area_fullname = '陕西省咸阳市淳化县' where area_code = '610430';                                                                
update td_area_test set area_fullname = '陕西省延安市宜川县' where area_code = '610630';                                                                
update td_area_test set area_fullname = '陕西省汉中市佛坪县' where area_code = '610730';                                                                
update td_area_test set area_fullname = '陕西省榆林市清涧县' where area_code = '610830';                                                                
update td_area_test set area_fullname = '克孜勒苏柯尔克孜自治州喀什地区巴楚县' where area_code = '653130';   

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

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

相关文章

php的变量都放在哪里,php变量一般放在哪个位置

php变量一般放在哪个位置php定义变量的要求格式,是非常宽松的,至于在哪里定义变量就需要看你的需求,可以在构造函数,也可以在你定义的方法中定义局部变量,也可以在构造函数外面定义全局变量。// 局部变量 函数内部func…

oauth2令牌刷新_了解OAuth2令牌认证

oauth2令牌刷新1.简介 在本教程中,我们将了解OAuth2令牌身份验证 ,以便只有经过身份验证的用户和应用程序才能获得有效的访问令牌,该令牌随后可用于访问服务器上的授权API(在OAuth术语中仅是受保护的资源)。 使用基于…

jsap支付_Java命令行界面(第20部分):JSAP

jsap支付JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了多个解析器,所有解析器都处理了开关,但是没…

python语句大全input_input提示文字 Python基础输入函数,if-else语句,if-elif

input()函数 此功能用于获取用户输入。 (调用1)input后,程序将立即暂停并等待用户输入。在用户完成内容输入后,单击Enter,程序将继续向下执行。 例如: input() (2&#x…

ftp限流java,FTP流量限制的方法

一般来说,下载都是通过FTP来实现的,这样简单的采用ACLs就可以实现的。不过这样存在一个问题,就是原来正常的网络访问也给禁止了,无法继续工作,另外,还有大量的DOWNLOAD不通过FTP,而是借助HTTP协…

argparser_Java命令行界面(第22部分):argparser

argparserJohn Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外,还提供了指向基于Javadoc的API文档 ,JAR文件,ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系…

判断 小程序 是否 滚动到页面底部 scrolltolower_微信小程序长列表性能优化——recycle-view

背景:第七次人口普查项目使用是微信小程序原生框架,组件是根据用户需求由项目组前端组组长封装完成的。采集小程序正式登记首页列表页面,根据腾讯老哥在sentry上的监控可以看出,列表页面前端性能比较差,主要表现在一些…

java rop_Java命令行界面(第23部分):Rop

java ropRop库在其主页上被描述为“用Java编写的轻量级命令行选项解析器”。 Rop的“简介”还指出:“ Rop的设计目的是最小化同时方便,并涵盖了大多数常见的命令行解析用例。” 这篇文章是本系列中有关解析Java命令行参数的系列文章中的第23部分&#xf…

java 接口 私有_Java 9:好的,坏的和私有的接口方法

java 接口 私有Java 9 是在几周前发布的。 查看发行说明 ,其中包含许多有趣的功能。 不过,我觉得并非一切都是不如Oracle和Java行家似乎图片吧 。 我看到了Java世界中的三个趋势,分别是好,坏和丑陋。 让我们从好的开始。 Birdman…

python卸载module_Python学习笔记

拖了一整年终于开始学习Python编程。为了逼自己快速上路,强行要求自己本学期的两门课程全部的coding作业用Python完成。 一门机器学习(computational Stats),一门Jeff WU 大佬的实验设计与分析(DOE)。即使R…

mlp神经网络_白天鹅黑天鹅灰天鹅?卷积神经网络帮你搞定识别

全文共3014字,预计学习时长6分钟本文将通过一系列的天鹅图片来解释卷积神经网络(CNN)的概念,并使用CNN在常规多层感知器神经网络上处理图像。图像分析假设我们要创建一个能够识别图像中的天鹅的神经网络模型。天鹅具有某些特征&am…

java登录界面命令_Java命令行界面(第26部分):CmdOption

java登录界面命令由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 。 CmdOption在其GitHub主页上被描述为“一个通过注释配置的,用于Java 5应用程序的简单注释驱动命令行解析器工具包。” 该项目的副标题是“…

getopt java_Java命令行界面(第28部分):getopt4j

getopt javagetopt4j的页面将其描述为“一个根据GNU样式解析命令行参数的库。” 然后, 页面介绍getopt4j :“getopt4j库旨在以与glibc (GNU C运行时库)中的C getopt()函数相同的方式解析命令行选项。 与原始…

springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验

优质文章,及时送达作者 | wangzaiplus链接 | www.jianshu.com/p/6189275403ed一、概念幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次比如:订单接口, 不能多次创建订单支付接口, 重复支付同一笔订单只能扣一次钱支付宝回调接口, 可能…

java 示例_功能Java示例 第2部分–讲故事

java 示例这是称为“ Functional Java by Example”的系列文章的第2部分。 我在本系列的每个部分中开发的示例是某种“提要处理程序”,用于处理文档。 在上一部分中,我从一些原始代码开始,并应用了一些重构来描述“什么”而不是“如何”。 …

python range函数范围_Python range函数

Python range函数教程 range函数详解 语法 range(start, stop[, step]) 参数 参数 描述 start 计数从 start 开始。默认是从 0 开始。 stop 计数到 stop 结束,但不包括 stop。 step 步长,默认为1,可以支持负数。 返回值 返回生成的序列。 案例…

openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)

0 前言在阅读本文之前,请确保您已满足或可能满足一下条件:请确保您具备基本的Python编程能力。请确保您会使用Excel。请确保您的电脑已经安装好Python且pip可用。请确保您已经读过前文:如何使用Python操作Excel(一)LogicPanda,公众…

payara 创建 集群_使用Payara Micro的Easy Java EE Microservices

payara 创建 集群想知道如何开始使用Java EE Microservices? 使用Java EE API部署微服务只需要几个快速步骤。 许多人认为Java EE对于与微服务一起使用而言过于繁重,但事实并非如此……尤其是如果您仅利用服务所需的Java EE规范。 在这篇简短的文章中&am…

php导出页面居中设置,PHPExcel导出插入图片和居中问题

首先到网上先下载PHPExcel下载后解压得到这两个文件下载后引用该文件最后编写相关代码:首先是图片插入导出$objDrawing new PHPExcel_Worksheet_Drawing();$objDrawing->setName(‘Photo‘);$objDrawing->setDescription(‘Photo‘);$objDrawing->setPath…

两台电脑通过usb共享网络_怎样让电脑通过手机共享上网?

手头有部七年前买的安卓智能手机已经不用了,卖掉不值钱,放在家里也是浪费。能否让它继续发挥余热呢?最近找到了一个好办法,就是可以让个人电脑通过它来上网(如下图所示):1. 用数据线将电脑与手机…