25.07.2016, Vladimír Klaus, navštíveno 5488x

SQL
SQL Server

Pokud potřebujete třeba v dokumentaci uvést velikosti polí všech tabulek, je možné použít tento SQL. Podobný jste někde možná již objevili, ale problém bývá v případě nvarchar polí, u kterých je uvedena velikost v bajtech, ale nás spíše zajímá, kolik reálně znaků lze do uvedeného pole zapsat. Proto je tam ta malá podmínka. A snad ještě poznámka - v případě nvarchar(MAX) bude uvedena délka 0.

SELECT
  o.name as NazevTabulky
  ,c.name as NazevSloupce
  ,t.name as DatovyTyp
  ,case t.name
    when 'nvarchar' then c.length/2
    else c.length
  end as Delka
FROM sysobjects o
JOIN syscolumns c ON o.id = c.id
JOIN systypes t ON c.xtype = t.xtype
WHERE o.xtype = 'u' and t.name <> 'sysname' and o.name <> 'sysdiagrams'
ORDER BY o.name

Výsledek pak může vypadat třeba takto:

MS SQL Server - zjištění velikosti a typu polí všech tabulek