vendredi 24 septembre 2010

Helper - Find Column

Il n'y a pas si longtemps que cela, je cherchais les tables contenant les prix d'achat (BuyPrice).
Malheureusement, la DB contient beaucoup de tables et beaucoup de champs.
De surcroit, le nom du champ n'est pas obligatoirement exactement "BuyPrice" car il peut contenir préfix et suffix (ex: CreditBuyPrice, BuyPriceTotal, etc).
L'opération s'annonçait donc fastidieuse.

Heureusement, il existe la table Sys.SysColumns pour nous faciliter la vie et un petit script SQL peut rendre la tâche bien plus agréable.

--  
--  Helper - Find Column
--
-- Description:
--    Locate Tables having a columnName looking to a string.
--
--    @PartialColumnName contains the columns name to look for.
--    @OnlyTables        1: Only user tables, 
--                       0: also includes views, table valued function (parameter & returned columns), etc
--
-- Author: Meurisse Dominique
-- Changes:
--   20/09/2010 - creation
--   20/09/2010 - Add parameter @OnlyTables
--
DECLARE @PartialColumnName varchar(20)
DECLARE @OnlyTables smallint 

SET @PartialColumnName = 'BuyPrice' -- <<<< change here >>>>
SET @OnlyTables = 1 -- <<< Look only on tables or All object >>>

select SCHEMA_NAME( uid )+'.'+obj.name as TableName, col.name as ColumnName 
from sys.syscolumns col 
inner join sys.sysobjects obj on obj.id = col.id and (@OnlyTables = 0 or (@OnlyTables = 1 and obj.xtype = 'U'))
where LOWER(col.name) like '%'+LOWER(@PartialColumnName)+'%'
order by SCHEMA_NAME( uid ), obj.name

Aucun commentaire: