Post by LuigiIl mio scopo sarebbe di trovare tutti i campi (colonne) che abbiano
una certa estensione nel nome (ad es. _en per i campi in inglese), e
questo per tutte le tabelle del mio Db.
Potrei aprire tabella per tabella (attraverso l'EM), ma se le tabelle
sono qualche centinaio, come nel mio caso, il lavoro diventa
lunghissimo.
Ciao Luigi,
SQL Server 2000 offre la possibilità di leggere i metadati senza la
necessità di accedere alle tabelle di sistema ricorrendo alle Information
Schema Views.
Le Information Schema Views aderiscono allo standard ANSI SQL-92 e
permettono alle applicazioni di funzionare correttamente anche nel caso in
cui le tabelle di sistema subiscano notevoli modifiche (per esempio dovute
all'installazione di un service pack).
Nel tuo caso potresti ricorrere alla Information Schema View COLUMNS.
Nel seguente esempio recupero tutte le colonne di viste e tabelle che
teminano con il suffisso "ID":
USE Northwind
GO
SELECT
TABLE_SCHEMA
, TABLE_NAME
, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE N'%ID'
GO
/* Output:
TABLE_SCHEMA TABLE_NAME COLUMN_NAME
------------- -------------------- ------------
dbo sysconstraints colid
dbo sysconstraints constid
dbo sysconstraints id
dbo Employees EmployeeID
dbo Categories CategoryID
dbo Customers CustomerID
dbo dtproperties id
dbo dtproperties objectid
...
dbo EmployeeTerritories EmployeeID
dbo EmployeeTerritories TerritoryID
dbo New Order Details OrderID
dbo New Order Details ProductID
(46 row(s) affected)
*/
Se ti interessano solo le tabelle puoi utilizzare anche l'Information Schema
View TABLES:
SELECT
C.TABLE_SCHEMA
, C.TABLE_NAME
, C.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS C JOIN INFORMATION_SCHEMA.TABLES T
ON C.TABLE_CATALOG = T.TABLE_CATALOG AND
C.TABLE_SCHEMA = T.TABLE_SCHEMA AND
C.TABLE_NAME = T.TABLE_NAME
WHERE C.COLUMN_NAME LIKE N'%ID'
AND T.TABLE_TYPE = 'BASE TABLE'
GO
/* Output:
TABLE_SCHEMA TABLE_NAME COLUMN_NAME
------------- --------------------- ----------------
dbo Categories CategoryID
dbo CustomerCustomerDemo CustomerID
dbo CustomerCustomerDemo CustomerTypeID
dbo CustomerDemographics CustomerTypeID
dbo Customers CustomerID
dbo dtproperties id
dbo dtproperties objectid
dbo Employees EmployeeID
dbo EmployeeTerritories EmployeeID
dbo EmployeeTerritories TerritoryID
dbo New Order Details OrderID
dbo New Order Details ProductID
dbo Order Details OrderID
dbo Order Details ProductID
dbo Orders OrderID
dbo Orders CustomerID
dbo Orders EmployeeID
dbo Products ProductID
dbo Products SupplierID
dbo Products CategoryID
dbo Region RegionID
dbo Shippers ShipperID
dbo Suppliers SupplierID
dbo Territories TerritoryID
dbo Territories RegionID
(25 row(s) affected)
*/
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org