[英]Finding a Named column present in a table
我瘋狂地找到一個SQL或T-SQL查詢來獲取數據庫/模式中具有給定名稱列的所有表的名稱。
請問有人幫我嗎?
提前致謝 :)
這將找到您在當前/活動數據庫中的列。 如果您在不同的數據庫中,只需在INFORMATION_SCHEMA.COLUMNS
加上數據庫名稱(例如dbname.INFORMATION_SCHEMA.COLUMNS
)
DECLARE @Schema varchar(max)
DECLARE @Column varchar(max)
SET @Schema = NULL
SET @Column = 'primary_id'
SELECT DISTINCT
TABLE_NAME, *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = @Column
AND
(
@Schema IS NULL
OR TABLE_SCHEMA = @Schema
)
這將在SQL Server中工作,並且也應該在其他DBMS中工作,因為INFORMATION_SCHEMA有些標准化(例如,它在MySql中: http : //dev.mysql.com/doc/refman/5.0/en/columns-table.html )
您可以使用INFORMATION_SCHEMA.COLUMNS
系統視圖:
SELECT DISTINCT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'Name of column';
此查詢將為您提供包含名為foo的列的所有表
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'foo'
請注意,雖然對於SQL * Server(以及mySQL和postGres)是正確的,但Oracle的答案卻不同,因為它們不支持信息模式(即ANSI SQL-92,所以他們有足夠的時間這樣做)。
在Oracle上你會使用
SELECT table_name, column_name
FROM ALL_TAB_COLUMNS
WHERE column_name = :column_name
或者您可以創建一個模式和視圖來完成缺少的information_schema.columns的工作。
select TABLE_NAME from Your_Database_Name.INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME like '%ColumnName%' group by TABLE_NAME
在sybase;
declare @column varchar(30)
select @column = 'column_name'
select object_name(id), @column from DB_NAME..syscolumns where name = @column
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.