日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2023/12/3 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 實際需求
  • 分析思路
  • 寫拼接 SQL 腳本的腳本語句
  • 執行得到腳本語句
  • 保存成 SQL 腳本文件

實際需求

有些行政區域的字段 area_fullname 是空的,如何補全呢?如下所示:

分析思路

(一)如何取到每個區域的上級名稱和上上級名稱?
區域編碼有規律,末尾有2個0的是上級,末尾有3個0 的是上上級,從而可以通過截取字符串、拼接字符串、關聯子查詢來得到。

(二)用到哪些技術點?

  • 截取字符串函數
  • 拼接字符串函數
  • 空值轉換函數
  • 關聯子查詢
  • 上級:(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';

    總結

    以上是生活随笔為你收集整理的MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。