Saturday, June 10, 2006

Sql Server Table Column counts

It has been a long time since i added anything to the tech blog.

Got one very nice UDF here for finding the number of columns in each table.
Was very useful as i had to upgrade a clients db after a long time.

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE FUNCTION dbo.udf_Tbl_ColCountTAB (

@Table_Name_Pattern sysname = NULL -- Pattern for matching
-- to the table name, Null=all
, @Col_Name_Pattern sysname = NULL -- Pattern for matching
-- to the column name, NULL=all
) RETURNS TABLE
-- NO SCHEMABINDING do to use of INFORMATION_SCHEMA
/*
* Returns a count for the number of columns in each table or
* view that satisfies the Table_Name_Pattern
*
* Example:
select * FROM dbo.udf_Tbl_ColCountTAB (null, null)
*
*/
AS RETURN

SELECT TOP 100 PERCENT WITH TIES
c.TABLE_NAME
, COUNT(*) NumColumns
FROM INFORMATION_SCHEMA.[COLUMNS] c
inner join INFORMATION_SCHEMA.[TABLES] t
ON C.TABLE_SCHEMA = t.TABLE_SCHEMA
and c.TABLE_NAME = T.TABLE_NAME
WHERE TABLE_TYPE = 'BASE TABLE'
and 0=OBJECTPROPERTY(OBJECT_ID(t.TABLE_NAME),
'IsMSShipped')
and (@Table_name_pattern IS NULL
or c.TABLE_NAME LIKE @Table_Name_Pattern)
and (@Col_Name_Pattern IS NULL
or c.COLUMN_NAME LIKE @Col_Name_Pattern)
GROUP BY c.TABLE_NAME
ORDER BY c.TABLE_NAME

GO

GRANT SELECT ON dbo.udf_Tbl_ColCountTAB to PUBLIC
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

No comments: