2013-07-03 2 views
0

일부 테이블에는 공통 번호가 Asset_ID이고 테이블 이름 목록을 가져 오는 쿼리는 공통적으로 Asset_ID입니다. 당신이 열의 데이터의 값에 따라 테이블 이름을 얻고 싶은 경우에SQL 서버의 공통 열 값을 포함하는 테이블 목록을 얻는 방법

+0

다음 SQL Server 버전은 무엇입니까? – user1429080

+0

질문 할 때 구체적으로 기재하십시오. 당신이 기대하는 것을 샘플로 제공하는 것이 좋습니다. – bansi

+0

그것은 SQL 서버 2008에 있습니다. 하나의 데이터베이스에서 나는 각 테이블에 "asset_id"라는 열이있는 10 개의 테이블을 가지고 있습니다. 이제 asset_it = 'ddn224'인 4 개의 테이블이 있다고 가정 해 봅시다. 어떻게 목록을 생성합니까? 테이블 어디 asset_id = 'ddn224'. – kingshuk

답변

1

는 당신이 시도 간단한 쿼리하여 얻을 수 select table_name from information_schema.columns where column_name='Asset_ID'

을 시도해보십시오

declare @val_to_search varchar(50), @column_name varchar(50) 
Select @val_to_search = 'ddh224', @column_name='Asset_ID' 

declare tbl cursor for 
select table_name from information_schema.columns where [email protected]_name 
declare @tablename varchar(200),@qstr varchar(max) 
declare @datapen table(table_name varchar(200)) 

open tbl 
fetch tbl into @tablename 
while @@fetch_status=0 
begin 
select @qstr='select top 1 '''[email protected]+''' from '[email protected]+' where '+ @column_name + ' =''' + @val_to_search + '''' 
insert into @datapen 
exec(@qstr) 

fetch tbl into @tablename 
end 
close tbl 
deallocate tbl 
select * from @datapen pen 
+0

asset_id = "ddh224"인 asset_id.like와 동일한 값을 가진 테이블의 이름 만 선택하려고합니다. 그래서 그것은 asset_id = "ddh224" – kingshuk

+0

테이블 이름을 선택 만하면 server2008의 @qsrt 행에서 구문 오류가 발생합니다. – kingshuk

+0

오류 메시지 란 무엇입니까? 2005, 2008 R2 및 2012 – bansi

0

쿼리 유를 도울 수 아래 !

이 쿼리는 열 이름과 함께 모든 테이블을 나열합니다!

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 어디 COLUMN_NAME LIKE '% COLUMNNAME %'

이 쿼리 모든 테이블을 나열합니다!

SELECT * TABLE_TYPE = 'BASE 표'AND TABLE_NAME LIKE '%의 TABLENAME의 %가'

난 항상 모든 검색 키워드를 찾기 위해 이것을 사용
0

, 모든 경기를 나열합니다 INFORMATION_SCHEMA.TABLES FROM SP, 테이블, 함수 ...

select distinct name 
from syscomments c 
join sysobjects o on c.id = o.id 
where TEXT like '%Asset_ID%' 
관련 문제