对比两个表名不同但列名相同的表的列的类型与长度
程序员文章站
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
上一篇: C 宏中的#和##