เป็นสคริปที่เขียนมาเพราะว่า ตารางที่ใช้อยู่ตอนนี้ แต่ละ 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 ก็ลองเปลี่ยนเงื่อนไข เครื่องหมายเป็น > < ดูก็ได้