欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对比两个表名不同但列名相同的表的列的类型与长度

程序员文章站 2024-03-22 10:28:46
...
USE tempdb
GO
IF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1
IF OBJECT_ID('t2') IS NOT NULL DROP TABLE t2
CREATE TABLE t1(c1 INT,c2 NVARCHAR(60))
CREATE TABLE t2(c1 INT,c2 VARCHAR(50))

;WITH cte AS (
SELECT c.name AS t1_columnName,s.name AS t1_type,c.max_length AS t1_max_length
  FROM sys.[columns] AS c INNER JOIN sys.types AS s ON c.user_type_id=s.user_type_id
WHERE c.object_id=OBJECT_ID('t1')
)
,cte2 AS (
SELECT c.name AS t2_columnName,s.name AS t2_type,c.max_length AS t2_max_length
  FROM sys.[columns] AS c INNER JOIN sys.types AS s ON c.user_type_id=s.user_type_id
WHERE c.object_id=OBJECT_ID('t2')
)
SELECT t1_columnName
,t1_type
,t1_max_length
,t2_type 
,t2_max_length
FROM cte INNER JOIN cte2 ON cte.t1_columnName = cte2.t2_columnName