查看: 120|回复: 1

mysql利用CONCAT方法生成批量修改表名sql语句

[复制链接]

2

主题

10

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2023-3-23 19:44:48 | 显示全部楼层 |阅读模式
mysql利用CONCAT方法生成批量修改表名sql语句

实现这个功能需知道mysql的CONCAT函数的使用:  实现将多个字符串连接成一个字符串   实现这个功能需知道mysql的substring函数的使用: substring(string, position, length)
1. 数据表准备

准备'ab_'开头的表名称,修改成'test_'开头



准备'ab_'开头的表名称,修改成'test_'开头

2.组织sql语句

简单介绍下substring用法

substring(string, position, length)
第一个参数string指的是要从中提取的字符串。
第二个参数position指的起始位置。可以是正数或负数。如果是正数,则此函数从字符串的开头提取。如果是负数,则此函数从字符串的结尾提取。(==注意:这个开始位置是从1开始不是从0开始==)
第三个参数length指的是要提取的字符数。如果省略,将返回整个字符串(从起始位置)。
例:substring(‘china’, 2, 2) 的结果为 ‘hi’
案例中应用

SELECT
    *
FROM
    information_schema.TABLES
WHERE
    table_name LIKE 'ab_%'
    AND TABLE_SCHEMA = "test";



查询结果

要实现的sql

SELECT
    CONCAT( 'ALTER TABLE ', table_name, ' RENAME TO test_', substring( table_name, 4 ), ';' )
FROM
    information_schema.TABLES
WHERE
    table_name LIKE 'ab_%'
    AND TABLE_SCHEMA = "test";



结果如下
回复

使用道具 举报

1

主题

8

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2025-3-23 01:43:19 | 显示全部楼层
无论是不是沙发都得回复下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表