mysql获取每个表的每个字段的长度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
SELECT
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE,
    (
        CASE
            WHEN DATA_TYPE IN ('tinyint') THEN 1
            WHEN DATA_TYPE IN ('smallint') THEN 2
            WHEN DATA_TYPE IN ('mediumint') THEN 3
            WHEN DATA_TYPE IN ('int') THEN 4
            WHEN DATA_TYPE IN ('bigint') THEN 8
            WHEN DATA_TYPE IN ('float') THEN 4
            WHEN DATA_TYPE IN ('double') THEN 8
            WHEN DATA_TYPE = 'decimal' THEN NUMERIC_PRECISION + NUMERIC_SCALE
            WHEN DATA_TYPE IN ('char', 'varchar', 'binary', 'varbinary') THEN
                IF(DATA_TYPE IN ('char', 'binary'), CHARACTER_MAXIMUM_LENGTH,
                   CHARACTER_MAXIMUM_LENGTH * 4 + IF(CHARACTER_MAXIMUM_LENGTH <= 255, 1, 2)) -- 对于字符串类型,假设UTF-8编码,实际长度需根据字符集确定
            WHEN DATA_TYPE IN ('date', 'time') THEN 3
            WHEN DATA_TYPE IN ('datetime', 'timestamp') THEN 5 + IFNULL(DATETIME_PRECISION, 0)
            WHEN DATA_TYPE = 'year' THEN 1
            ELSE '未知'
        END
    ) AS APPROX_FIELD_SIZE
FROM
    INFORMATION_SCHEMA.COLUMNS
WHERE
    TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema')   -- 排除系统表
        AND TABLE_NAME = 'your_table_name' -- 需要查询的表名
ORDER BY
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME;

  

posted @   Amireux-126  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示