ป้ายกำกับ: นับ

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 ก็ลองเปลี่ยนเงื่อนไข เครื่องหมายเป็น > < ดูก็ได้