Tag Archive FQDN

Byphunsanit

SQL Server: ค้นหา Table Description

ทำ database ต่อจากคนอื่นแบบไม่มีคู่มือ อาศัยดูจาก description ของตารางที่บางคนมีจรรยาบรรณเขียนอธิบายให้ไว้
find_from_table_name_description.sql

DECLARE @search VARCHAR(100) = '%อัตราแลกเปลี่ยน%';

SELECT
	DB_NAME() AS DatabaseName
	, SCHEMA_NAME(t.schema_id) AS SchemaName
	, t.name AS TableName
	, QUOTENAME(DB_NAME()) + '.' + QUOTENAME(SCHEMA_NAME(t.schema_id)) + '.' + QUOTENAME(t.name) AS FullyQualifiedTableName
	, c.name AS ColumnName
	, ty.name AS ColumnType
	, CASE
		WHEN ty.name IN (
			'char', 'varchar', 'nchar', 'nvarchar', 'binary', 'varbinary'
		) THEN CAST(c.max_length AS VARCHAR(10))
		WHEN ty.name IN (
			'decimal', 'numeric'
		) THEN CAST(c.precision AS VARCHAR(10)) + ',' + CAST(c.scale AS VARCHAR(10))
		ELSE ''
	END AS ColumnSize
	, CAST(COALESCE(ep_t.value, ep_c.value) AS NVARCHAR(MAX)) AS Description
	, CASE
		WHEN t.name LIKE @search
		OR CAST(ep_t.value AS NVARCHAR(MAX)) LIKE @search THEN 'Table'
		WHEN c.name LIKE @search
		OR CAST(ep_c.value AS NVARCHAR(MAX)) LIKE @search THEN 'Column'
		ELSE 'Unknown'
	END AS FoundIn
FROM
	sys.tables t
LEFT JOIN
    sys.columns c ON
	t.object_id = c.object_id
LEFT JOIN
    sys.types ty ON
	c.system_type_id = ty.system_type_id
	AND c.user_type_id = ty.user_type_id
LEFT JOIN
    sys.extended_properties ep_t
    ON
	t.object_id = ep_t.major_id
	AND ep_t.minor_id = 0
	AND ep_t.name = 'MS_Description'
LEFT JOIN
    sys.extended_properties ep_c
    ON
	t.object_id = ep_c.major_id
	AND c.column_id = ep_c.minor_id
	AND ep_c.name = 'MS_Description'
WHERE
	t.name LIKE @search
	OR CAST(ep_t.value AS NVARCHAR(MAX)) LIKE @search
	OR c.name LIKE @search
	OR CAST(ep_c.value AS NVARCHAR(MAX)) LIKE @search
ORDER BY
	TableName
	, ColumnName;

อ่านเพิ่มเติม