检查 MySQL 中的数字与非数字列类型

Check Numeric vs. Non-numeric column type in MySQL

我正在使用 MySQL 的 INFORMATION_SCHEMA 架构来自动处理表中的通用列。
一项任务是识别数字和非数字列类型以在两种情况下应用特定操作。 当然,我可以在 MySQL 中为每个单一数据类型定义操作并以这种方式解决我的问题,但我想知道是否使用像这样的解决方案:

SELECT
    NUMERIC_PRECISION
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_SCHEMA='aschema' AND 
    TABLE_NAME='atable' AND
    COLUMN_NAME='acolumn'

如果横跨表和列可能足以粗略区分我感兴趣的两种列。
我的目标是让 TRUE/FALSE 识别列是否包含数字数据类型。
欢迎任何其他想法。
缺点也欢迎指出。

SELECT [COLUMN_NAME],[DATA_TYPE] FROM  INFORMATION_SCHEMA.COLUMNS
WHERE [DATA_TYPE] IN ('int','bigint','smallint','mediumint' 'tinyint','float','numeric')

我投给 NUMERIC_PRECISION IS NOT NULL。它包括 "bit"。要排除 "bit",请使用 NUMERIC_SCALE IS NOT NULL。如果你想争论 "enum" 或 "year" 是数字,那么使用像 Dudi 那样的 IN 子句。