หมวดหมู่: T-SQL

Microsoft SQL Server is Transact-SQL (T-SQL)

SQL Server เช็ค column prefixSQL Server เช็ค column prefix

เป็นสคริปที่เขียนมาเพราะว่า ตารางที่ใช้อยู่ตอนนี้ แต่ละ table จะมีอยู่ 2 prefix ทำให้เขียน query ออกมาไล่ทุก ๆ ตาราง นับดูว่า มันมี น้อยกว่า มากกว่า มาตราฐานการออกแบบ Design Consistency
audit_table_column_prefix.sql

WITH ColumnPrefixes AS (SELECT
 s.name AS SchemaName,
 t.name AS TableName,
 c.name AS ColumnName,
 -- แก้ไขจุดที่ทำให้เกิด Error 537
 CASE
 WHEN CHARINDEX ('_', c.name) > 0
 THEN LEFT (c.name, CHARINDEX ('_', c.name) - 1) ELSE '[No Prefix]'
 END AS Prefix
 FROM sys.tables t
 INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
 INNER JOIN sys.columns c ON t.object_id = c.object_id
 WHERE t.is_ms_shipped = 0
 AND t.name <> 'sysdiagrams') ,
PrefixStats AS (SELECT
 SchemaName,
 TableName,
 COUNT (DISTINCT Prefix) AS PrefixCount,
 -- ใช้ STRING_AGG (สำหรับ SQL 2017+) หรือ XML PATH (สำหรับ SQL รุ่นเก่า) STUFF ( (SELECT DISTINCT ', ' + cp2.Prefix
 FROM ColumnPrefixes cp2
 WHERE cp2.SchemaName = cp.SchemaName AND cp2.TableName = cp.TableName
 FOR XML PATH ('') , TYPE) .value ('.', 'NVARCHAR (MAX) ') , 1, 2, '') AS FoundPrefixes
 FROM ColumnPrefixes cp
 GROUP BY SchemaName, TableName) SELECT
 SchemaName,
 TableName,
 PrefixCount,
 FoundPrefixes
FROM PrefixStats
WHERE PrefixCount != 2
ORDER BY SchemaName, TableName;

ถ้ามาตราฐานมี prefix ไม่เท่ากับ 2 ก็ลองเปลี่ยนเงื่อนไข เครื่องหมายเป็น > < ดูก็ได้