SQL Server 2005를 사용 중이고 sa
으로 로그인했습니다. 내 데이터베이스의 모든 테이블에 특정 열 이름이 있는지 여부를 쿼리하고 싶습니다. 그리고 각 열 (columnNameValue = someValue)을 결과 테이블에 추가하십시오. 그런 다음 결과 테이블을 반환하십시오.데이터베이스의 모든 테이블에서 모든 행 선택 (열 이름 = 값) 열 이름이있는 경우
거기에는 몇 가지 유사한 문제가 있습니다. 특히 나는 이것을 위해 sp_MSForeachTable
을 사용할 수 있지만 어떤 종류의 문서도 부족합니다. SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
을 사용하면 모든 테이블의 목록을 얻을 수 있습니다.
다음 솔루션 (link text)은 모든 열 & 모든 테이블로 이동하여 셀에서 특정 값을 찾습니다. 해당 열이 특정 columnName 인 경우 셀에서 특정 값을 찾는 것과 다릅니다.
중첩 된 while 문을 작성할 수는 있지만 이와 같은 쿼리를 실행하는 모든 inbuilt 명령이 있습니까?
의사 코드가 도움이된다면 :
foreach(table in tableList) {
if (table.hasColumnName(SOME_COLUMN) {
EXEC ('SELECT * FROM table WHERE (SOME_COLUMN = SOME_VALUE)')
}
}
[편집]
오히려 그 하나의 결과는 내가 적어도 선택 반환만큼 테이블 당 하나의 결과 싶습니다 설정 한하나의 행. 조인이나 노조가 작동하는 것을 기대하는 것이 비현실적이므로 매우 많은 양의 결과가 있어야합니다.
가능하면 각 결과의 시작에 tablename을 추가하고 싶습니다.
은 그 아래의 간단한 쿼리는 모든 결과를 얻을 수 있지만 그것은에 어떤 테이블이 속한 개인에 따라 결과의 시각적 표시를 제공 빈 테이블을 표시하고 나던 뜻 :[또한 편집]
확인 IF를 포함 아래의 쿼리를 존재 업데이트 그 @Martin하는 결과 덕분에 테이블 소스를 추가 할 소스 컬럼으로 NULL 결과 & 선택 이름을 제거
DECLARE @COLUMN_VALUE nvarchar(512), @VALUE nvarchar(10);
SET @COLUMN_VALUE = 'id'
SET @VALUE = '0';
DECLARE @TABLE_NAME nvarchar(512), @COLUMN_NAME nvarchar(512), @QUERY nvarchar(512);
SET @TABLE_NAME = '';
WHILE @TABLE_NAME IS NOT NULL
BEGIN
SET @TABLE_NAME =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TABLE_NAME
);
PRINT 'Table name : ' + @TABLE_NAME;
SET @COLUMN_NAME =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_NAME = PARSENAME(@TABLE_NAME, 1))
AND (COLUMN_NAME = @COLUMN_VALUE)
);
PRINT 'Column name : ' + @COLUMN_NAME;
IF @COLUMN_NAME IS NOT NULL
BEGIN
SET @QUERY =
'SELECT ''' + @TABLE_NAME + ''' AS Source, * ' +
'FROM ' + @TABLE_NAME + ' ' +
'WHERE (' + @COLUMN_NAME + ' = ' + @VALUE + ')'
EXEC
(
'IF EXISTS(' + @QUERY + ') ' + @QUERY
)
END
END
TableA에 두 개의 열이 있고 TableB에 세 개의 열이 있으면 어떻게 될 것으로 예상됩니까? –
@Lieven 모든 결과를 하나의 테이블에 병합 할 필요가 없으므로 columnName이 유효한 각 테이블에 대해 단일 결과 세트를 반환합니다. – Raynos