You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何找出两个表数据类型不匹配的列名

找出两个表中数据类型不匹配的列

嘿,这事儿好办!要找出table_a和table_b里数据类型不匹配的共同列,咱们可以用SQL直接对比它们的列结构。

方法一:基于给定静态表结构的验证查询

如果你只是想验证手头的表结构,咱们可以把两个表的列和类型用子查询模拟出来,再关联对比:

SELECT 
    a.col_name,
    a.data_type AS table_a_data_type,
    b.data_type AS table_b_data_type
FROM 
    (
        SELECT 'name' AS col_name, 'nvarchar' AS data_type UNION ALL
        SELECT 'age', 'nvarchar' UNION ALL
        SELECT 'city', 'nvarchar' UNION ALL
        SELECT 'dob', 'nvarchar'
    ) a
INNER JOIN 
    (
        SELECT 'name' AS col_name, 'nvarchar' AS data_type UNION ALL
        SELECT 'age', 'int' UNION ALL
        SELECT 'city', 'nvarchar' UNION ALL
        SELECT 'dob', 'datetime' UNION ALL
        SELECT 'country', 'nvarchar'
    ) b ON a.col_name = b.col_name
WHERE 
    a.data_type <> b.data_type;

执行后会得到你想要的结果:

col_nametable_a_data_typetable_b_data_type
agenvarcharint
dobnvarchardatetime

方法二:真实数据库环境的通用查询

如果是在SQL Server这类数据库里,咱们可以直接查系统元数据视图,不用手动写表结构,更高效:

SELECT 
    c1.COLUMN_NAME,
    c1.DATA_TYPE AS table_a_data_type,
    c2.DATA_TYPE AS table_b_data_type
FROM 
    INFORMATION_SCHEMA.COLUMNS c1
INNER JOIN 
    INFORMATION_SCHEMA.COLUMNS c2 
    ON c1.COLUMN_NAME = c2.COLUMN_NAME
WHERE 
    c1.TABLE_NAME = 'table_a'
    AND c2.TABLE_NAME = 'table_b'
    AND c1.DATA_TYPE <> c2.DATA_TYPE;

这个查询会自动找出两个表中所有列名相同但数据类型不同的列,结果和上面完全一致。

内容的提问来源于stack exchange,提问作者tyson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:57:37