文章目录

  • >实例
    • 需求
    • 解决方案
  • >详解
  • 问题
    • 1.查出所需要的列名
    • 2.确定修改SQL
    • 3.通过CONCAT函数批量生成修改SQL
    • 4.执行生成的sql
    • 注意

>实例

需求

已知,存在以上特征的五张表,表名有部分相同,每张表中的字段除数量不同外,其他特征都差不多,默认都为null。现在存在一个需求:

  • 将这五张表中,所有使用了double或者int的字段修改为decimal类型,其他不变

解决方案

-- 定义并初始化变量
-- SELECT
--  @rownum := 0;
-- 生成sql
SELECT-- @rownum := @rownum + 1 rownum,TABLE_NAME,COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,CONCAT( 'ALTER TABLE ',TABLE_NAME,' modify column ', COLUMN_NAME, ' decimal default null "', COLUMN_COMMENT, '";' )
FROMinformation_schema.COLUMNS
WHEREtable_name like '%alarm_setting%' AND table_schema = 'csf' ;-- AND COLUMN_NAME LIKE '%JE%'

效果

如上,就生成了所有需要的sql,然后对生成的sql稍加处理就可以使用了。

>详解

以下内容来自: MySQL批量修改字段数据类型

问题

有一张表RULE,里面有120个以JE开头的字段,类型为tinytext,发现字段长度不够,需要修改成text类型。

1.查出所需要的列名

SELECTCOLUMN_NAME,DATA_TYPE,COLUMN_COMMENT
FROMinformation_schema.COLUMNS
WHEREtable_name = '表名' AND table_schema = '数据库名'

表名修改为RULE,数据库名修改为glb,添加条件查出JE开头的字段

SELECTCOLUMN_NAME,DATA_TYPE,COLUMN_COMMENT
FROMinformation_schema.COLUMNS
WHEREtable_name = 'RULE' AND table_schema = 'glb' AND COLUMN_NAME LIKE '%JE%';

2.确定修改SQL

修改一个字段的sql为:

ALTER TABLE GLB_REPROT_RULE MODIFY JE1 TEXT;

3.通过CONCAT函数批量生成修改SQL

SELECTCOLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,CONCAT( 'ALTER TABLE RULE MODIFY ', COLUMN_NAME, ' TINYTEXT;' )
FROMinformation_schema.COLUMNS
WHEREtable_name = 'RULE' AND table_schema = 'glb' AND COLUMN_NAME LIKE '%JE%';

注意增加空格和分号

4.执行生成的sql

注意

修改后注释会丢失,需要重新填写注释。本例子的注释格式与字段名格式相似,可以借助变量实现注释。

-- 定义并初始化变量
SELECT@rownum := 0;
-- 生成sql
SELECT@rownum := @rownum + 1 rownum,COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,CONCAT( 'ALTER TABLE RULE MODIFY ', COLUMN_NAME, ' TINYTEXT COMMENT "金额', @rownum, '";' )
FROMinformation_schema.COLUMNS
WHEREtable_name = 'RULE' AND table_schema = 'glb' AND COLUMN_NAME LIKE '%JE%';

注意:注释需要用""包住,否则会出错

mysql批量修改表字段类型(生成修改sql)相关推荐

  1. Oracle应用之修改表字段类型

    Mysql对于有数据和没数据的表字段类型都可以随意修改,不过oracle就不一样. 假如表A有个字段a,本来为number类型,然后我们想修改为varchar2类型. (1)字段a没数据的情况,改为v ...

  2. 修改表字段类型长度_PG修改字段

    今天又遇到一个需求,要把PG中的字段类型修改一下.本来以为是个很简单的事情,毕竟Oracle就是一条指令就行了.但是在PG中改字段真的真的太难了. 当你修改表字段的时候,会报ERROR: cannot ...

  3. html 字段類型控制,db2修改表字段类型

    db2 如何向表中增加,修改字段 如果此回答对楼主有帮助,给个喜欢好吗?啦 db2表字段修改 1:删除字段非空属性alter table XXX alter column XXX drop not n ...

  4. mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  5. Mysql 使用【information_schema.COLUMNS】批量修改表字段注释

    接手一个新项目,已经初步开发并上线了.因开发人员不按规范开发,数据库表中的字段注释基本没有,线上追加注释不方便,最后解决是在测试端生成相应的修改字段的Sql语句来同步线上的字段保证线上.线下数据库表. ...

  6. 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  7. MySql数据库中,表字段新增,修改,删除

    通过存储过程进行对mysql 数据库表字段增加,修改,删除 USE `mydatasql`;DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;DELIMITER ...

  8. mysql修改表字段名称

    修改表字段名格式如下: alter table 表名 change column 旧字段名 新字段名 [约束条件]: alter table MESSAGE change column LeaveMe ...

  9. oracle 测试数据类型,oracle修改表字段的数据类型测试

    oracle修改表字段的数据类型的测试 思路 将要更改类型的字段名改名新字段以备份: 根据需求,添加一个与要更改类型的字段名同名的字段(原字段已经改名), 然后更新数据, 最后删除改名备份的字段 脚本 ...

最新文章

  1. 字典 update()
  2. 网址http格式的拆分
  3. 递归调用cl_crm_oi_docx_transform_rt=process_node_cc
  4. 如何将Pcm格式的音频文件转换成Wave格式的文件
  5. Swing-BoxLayout用法-入门
  6. java中equals理解(2)
  7. QT 008 UI Add action 的方法
  8. hello bash
  9. kafka入门(一)简介
  10. 使用rsyslog+loganalzey收集日志显示客户端ip
  11. 疯狂java 李刚 pdf_Java开发教程 – 《疯狂Java讲义第4版》PDF及代码+李刚
  12. python对称加密算法库_对称加密算法
  13. 安装pip的三种方法
  14. 抗战史上知名的戚家刀PK日本真三武士刀刀型
  15. 图像分辨率+像素+尺寸+文件内存大小
  16. APM32F103 RTC内部时钟源报警中断例程测试
  17. LeetCode 28. 找出字符串中第一个匹配项的下标 -- 字符串编码成数字匹配
  18. Netty系列---源码实例
  19. 化繁为简——分解复杂的SQL语句
  20. MATLAB三点确定圆

热门文章

  1. 哈工大计算机学院答辩,人工智能与信息处理博士生培养方案-哈工大计算机学院-哈尔滨工业.DOC...
  2. 【EI连续检索】第五届人工智能与计算机科学国际会议(AICS2023)征稿中
  3. matlab学习 创建特殊矩阵(magic, pascal, vander, rand, randn, hilb, rosser, hadamard)
  4. 智能家居产业预测:2015年将是关键年
  5. 机械臂控制C语言程序,51单片机的6自由度机械臂 16路舵机控制 源码
  6. 判断汉字的数量(golang)
  7. Sql server 2008忘记sa登录密码重置
  8. html酷炫电子时钟效果,Html5时钟特效代码
  9. keil c51startup说明
  10. 车辆编队的队形控制方法及应用综述