Introduction
I would like to write the series of articles about useful User-Defined
Functions grouped by the following categories:
- Date and Time User-Defined Functions
- Mathematical User-Defined Functions
- Metadata User-Defined Functions
- Security User-Defined Functions
- String User-Defined Functions
- System User-Defined Functions
- Text and Image User-Defined Functions
In this article, I wrote some useful Meta Data User-Defined
Functions.
Meta Data UDFs
These scalar User-Defined Functions return information about the
database and database objects.
To download Meta Data User-Defined Functions click this link:
Meta Data UDFs
COL_LENGTH2
Returns the defined length (in bytes) of a column for a given table
and for a given database.
- Syntax
- COL_LENGTH2 ( 'database' , 'table' , 'column' )
- Arguments
- 'database' - Is the name of the database. database is an expression of type nvarchar.
'table' - Is the name of the table for which to determine column length
information. table is an expression of type nvarchar.
'column' - Is the name of the column for which to determine length.
column is an expression of type nvarchar.
- Return Types
- int
The function's text:
CREATE FUNCTION COL_LENGTH2( @database sysname,
@table sysname,
@column sysname )
RETURNS int
AS
BEGIN
RETURN (COL_LENGTH(@database + '..' + @table, @column))
END
GO
Examples
This example returns the defined length (in bytes) of the au_id
column of the authors table in the pubs database:
SELECT dbo.COL_LENGTH2('pubs', 'authors', 'au_id')GO
Here is the result set:
----------- 11 (1 row(s) affected)
COL_ID
Returns the ID of a database column given the corresponding
table name and column name.
- Syntax
- COL_ID ( 'table' , 'column' )
- Arguments
- 'table' - Is the name of the table. table is an expression of type nvarchar.
'column' - Is the name of the column. column is an expression of type nvarchar.
- Return Types
- int
The function's text:
CREATE FUNCTION COL_ID( @table sysname,
@column sysname )
RETURNS int
AS
BEGIN
DECLARE @col_id int
SELECT @col_id = colid FROM syscolumns
WHERE id = OBJECT_ID(@table) AND name = @column
RETURN @col_id
END
GO
Examples
This example returns the ID of the au_fname column of the
authors table in the pubs database:
USE pubsGO
SELECT dbo.COL_ID('authors', 'au_fname')
GO
Here is the result set:
----------- 3 (1 row(s) affected)
INDEX_ID
Returns the ID of an index given the corresponding
table name and index name.
- Syntax
- INDEX_ID ( 'table' , 'index_name' )
- Arguments
- 'table' - Is the name of the table. table is an expression of type nvarchar.
'index_name' - Is the name of the index. index_name is an expression of type nvarchar.
- Return Types
- int
The function's text:
CREATE FUNCTION INDEX_ID( @table sysname,
@index_name sysname )
RETURNS int
AS
BEGIN
DECLARE @indid int
SELECT @indid = indid FROM sysindexes
WHERE id = OBJECT_ID(@table) AND name = @index_name
RETURN @indid
END
GO
Examples
This example returns the ID of the aunmind index of the
authors table in the pubs database:
USE pubsGO
SELECT dbo.INDEX_ID('authors', 'aunmind')
GO
Here is the result set:
----------- 2 (1 row(s) affected)
INDEX_COL2
Returns the indexed column name for a given table and for
a given database.
- Syntax
- INDEX_COL2 ( 'database' , 'table' , index_id , key_id )
- Arguments
- 'database' - Is the name of the database. database is an expression of type nvarchar.
'table' - Is the name of the table.
index_id - Is the ID of the index.
key_id - Is the ID of the key.
- Return Types
- nvarchar (256)
The function's text:
CREATE FUNCTION INDEX_COL2( @database sysname,
@table sysname,
@index_id int,
@key_id int )
RETURNS nvarchar (256)
AS
BEGIN
RETURN (INDEX_COL(@database + '..' + @table, @index_id, @key_id))
END
GO
Examples
This example returns the indexed column name of the authors table
in the pubs database (for index_id = 2 and key_id = 1):
SELECT dbo.INDEX_COL2('pubs', 'authors', 2, 1)GO
Here is the result set:
----------------------- au_lname (1 row(s) affected)
ROW_COUNT
Returns the total row count for a given table.
- Syntax
- ROW_COUNT ( 'table' )
- Arguments
- 'table' - Is the name of the table for which to determine the total row count.
table is an expression of type nvarchar.
- Return Types
- int
The function's text:
CREATE FUNCTION ROW_COUNT( @table sysname )
RETURNS int
AS
BEGIN
DECLARE @row_count int
SELECT @row_count = rows FROM sysindexes
WHERE id = OBJECT_ID(@table) AND indid < 2
RETURN @row_count
END
GO
Examples
This example returns the total row count of the authors table
in the pubs database:
USE pubsGO
SELECT dbo.ROW_COUNT('authors')
GO
Here is the result set:
----------- 23 (1 row(s) affected)
See this link for more information: Alternative way to get the table's row count