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

时间:2015-02-16 08:38:33

标签: mysql stored-procedures information-schema

我正在使用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标识包含数字数据类型的列 欢迎任何其他想法 退货指出也很受欢迎。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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