[SQL] MS SQL 서버 - 지정된 이름을 가진 열을 포함하는 모든 테이블을 찾기
SQLMS SQL 서버 - 지정된 이름을 가진 열을 포함하는 모든 테이블을 찾기
그것은 열 것을 포함하는 테이블 이름을 조회하는 것이 가능
LIKE '%myName%'
?
해결법
-
==============================
1.테이블 검색 :
테이블 검색 :
SELECT c.name AS 'ColumnName' ,t.name AS 'TableName' FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%MyName%' ORDER BY TableName ,ColumnName;
테이블 및 뷰를 검색 :
SELECT COLUMN_NAME AS 'ColumnName' ,TABLE_NAME AS 'TableName' FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%MyName%' ORDER BY TableName ,ColumnName;
-
==============================
2.우리는 또한 다음과 같은 구문을 사용할 수 있습니다 : -
우리는 또한 다음과 같은 구문을 사용할 수 있습니다 : -
select * from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME like '%clientid%' order by TABLE_NAME
-
==============================
3.SQL 서버 :
SQL 서버 :
SELECT Table_Name, Column_Name FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = 'YOUR_DATABASE' AND COLUMN_NAME LIKE '%YOUR_COLUMN%'
신탁:
SELECT owner, table_name, column_name FROM all_tab_columns WHERE column_name LIKE '%YOUR_COLUMN_NAME%' AND OWNER IN ('YOUR_SCHEMA_NAME');
-
==============================
4.
select s.[name] 'Schema', t.[name] 'Table', c.[name] 'Column', d.[name] 'Data Type', c.[max_length] 'Length', d.[max_length] 'Max Length', d.[precision] 'Precision', c.[is_identity] 'Is Id', c.[is_nullable] 'Is Nullable', c.[is_computed] 'Is Computed', d.[is_user_defined] 'Is UserDefined', t.[modify_date] 'Date Modified', t.[create_date] 'Date created' from sys.schemas s inner join sys.tables t on s.schema_id = t.schema_id inner join sys.columns c on t.object_id = c.object_id inner join sys.types d on c.user_type_id = d.user_type_id where c.name like '%ColumnName%'
이 여기에 당신이 나에 필터에 WHERE 절에 추가 조건을 사용하도록 선택하지 않을 수있는 스키마, 테이블과 열에 대한 약간의 추가 정보를 제공합니다. 예를 들어, 당신은 단지 원하는 경우 값이 추가되어 있어야하는 필드를 볼 수 있습니다
and c.is_nullable = 0
그것은 당신의 필요에 따라 재정렬, 삭제, 이름 변경 또는 추가 다른 사람에게 쉬웠다 있도록 다른 조건문을 추가 할 수 있습니다, 나는이 수직 방식으로 SELECT 절에 열을 추가했다. 다른 방법으로 당신은 T.Name를 사용하여 단지 테이블을 검색 할 수 있습니다. 매우 사용자 정의 할 수 있습니다.
즐겨.
-
==============================
5.이 작업을해야합니다 :
이 작업을해야합니다 :
SELECT name FROM sysobjects WHERE id IN ( SELECT id FROM syscolumns WHERE name like '%column_name%' )
-
==============================
6.당신은 타사 도구에 더 많은 경우가 많은 옵션이 같은 :
당신은 타사 도구에 더 많은 경우가 많은 옵션이 같은 :
당신은 쉽게 이러한 사용하여 시스템 테이블을 검색 할 수 없기 때문에 이러한 경우 데이터베이스가 암호화 포함 개체 (뷰, 프로 시저, 함수) 매우 편리.
-
==============================
7.난 당신이 sys.columns에 sys.table에 가입 제안의 이유는 많은 모른다 당신은 단순히 코드 아래 사용할 수 있습니다 :
난 당신이 sys.columns에 sys.table에 가입 제안의 이유는 많은 모른다 당신은 단순히 코드 아래 사용할 수 있습니다 :
같은 TABLENAME, * SYS.columns에서 어디에 이름 LIKE '% MyName로 %'OBJECT_NAME (OBJECT_ID)을 선택
또는
당신은뿐만 아니라 스키마 이름을 원하는 경우 :
Select * from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME LIKE '%MyName%'
-
==============================
8.당신은 단순히 테이블 이름을 원하는 경우에 당신은 실행할 수 있습니다 :
당신은 단순히 테이블 이름을 원하는 경우에 당신은 실행할 수 있습니다 :
select object_name(object_id) from sys.columns where name like '%received_at%'
당신은뿐만 아니라 스키마 이름을 원하는 경우 (이 서로 다른 스키마를 많이해야하고,하지 않는 한 데이터베이스의 모든 테이블을 기억하고 자신이 속한 곳이 유용 할 수 있습니다 당신이 것입니다 경우, 많은에서) 실행 :
select OBJECT_SCHEMA_NAME(object_id),object_name(object_id) from sys.columns where name like '%received_at%'
그리고 마지막으로 (이것은 제 생각에는 코드가 () 너무 쉽게 쓰기에 복잡지고있는 곳입니다하지만) 당신은 더 좋은 형식으로 원하는 경우 :
select concat(OBJECT_SCHEMA_NAME(object_id),'.',object_name(object_id)) from sys.columns where name like '%received_at%'
당신은 또한 내가 무엇을 기반으로하는 함수를 만들 수 있습니다 :
CREATE PROCEDURE usp_tablecheck --Scan through all tables to identify all tables with columns that have the provided string --Stephen B @name nvarchar(200) AS SELECT CONCAT(OBJECT_SCHEMA_NAME(object_id),'.',object_name(object_id)) AS [Table Name], name AS [Column] FROM sys.columns WHERE name LIKE CONCAT('%',@name,'%') ORDER BY [Table Name] ASC, [Column] ASC GO
그것은 CONCAT 기능은 CONCATENATE 문자열에 2008R2 및 이전 버전을 사용 +를 들어 2012 년에 추가 된 것을 주목할 필요가있다.
나는이 게시 된 이후로는 시저에게 비트를 다시 포맷했습니다. 그것은 좀 더 지금 고급입니다하지만 많이 지저분 보이는 (그러나 당신이 그것을 볼 수 없을거야 그래서는 PROC에서의)와 더 나은 포맷입니다.
이 버전은 관리 데이터베이스에있는 다음 데이터베이스를 검색 할 수 있습니다. 기본 데이터베이스 (: 당신은 + 연산자를 사용하여 문자열 연결을 2012+에서만 작동이 변경됩니다 않는 한 CONCAT () 함수를 사용하여 주)가되고 싶어요 중에 '마스터'에서 @db의 decleration을 변경합니다.
CREATE PROCEDURE [dbo].[usp_tablecheck] --Scan through all tables to identify all tables in the specified database with columns that have the provided string --Stephen B @name nvarchar(200) ,@db nvarchar(200) = 'master' AS DECLARE @sql nvarchar(4000) = CONCAT(' SELECT concat(OBJECT_SCHEMA_NAME(col.object_id,DB_ID(''',@db,''')),''.'',object_name(col.object_id,DB_ID(''',@db,'''))) AS [Table Name] ,col.name AS [Column] FROM ',@db,'.sys.columns col LEFT JOIN ',@db,'.sys.objects ob ON ob.object_id = col.object_id WHERE col.name LIKE CONCAT(''%'',''',@name,''',''%'') AND ob.type =''U'' ORDER BY [Table Name] ASC ,[Column] ASC') EXECUTE (@sql) GO
-
==============================
9.
USE AdventureWorks GO SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%EmployeeID%' ORDER BY schema_name, table_name;
그것은 PINAL 선생님 블로그에서입니다
-
==============================
10.
SELECT COLUMN_NAME, TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%myName%'
-
==============================
11.당신은 COLUMN_NAME 필터에 의해 INFORMATION_SCHEMA.COLUMNS에서 찾을 수 있습니다
당신은 COLUMN_NAME 필터에 의해 INFORMATION_SCHEMA.COLUMNS에서 찾을 수 있습니다
Select DISTINCT TABLE_NAME as TableName,COLUMN_NAME as ColumnName From INFORMATION_SCHEMA.COLUMNS Where column_name like '%myname%'
-
==============================
12.
SELECT [TABLE_NAME] , [INFORMATION_SCHEMA].COLUMNS.COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME LIKE '%NAME%' ;
-
==============================
13.쿼리를 다음 당신에게 '%의 MyName로'와 같은 데이터베이스를 갖는 필드 이름의 정확한 테이블 이름을 제공 할 것입니다.
쿼리를 다음 당신에게 '%의 MyName로'와 같은 데이터베이스를 갖는 필드 이름의 정확한 테이블 이름을 제공 할 것입니다.
SELECT distinct(TABLE_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%myName%'
-
==============================
14.뿐만 아니라 테이블의 스키마로 열 이름, 테이블 이름 .. : 전체 정보를 얻으려면
뿐만 아니라 테이블의 스키마로 열 이름, 테이블 이름 .. : 전체 정보를 얻으려면
SELECT COLUMN_NAME, TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE '%col_Name%'
-
==============================
15.난 그냥 그것을 시도하고이 완벽하게 작동
난 그냥 그것을 시도하고이 완벽하게 작동
USE YourDatabseName GO SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%YourColumnName%' ORDER BY schema_name, table_name;
그대로 만하면 나머지 찾고있는 당신의 열 이름에 데이터베이스 및 YourcolumnName에 YourDatbaseName 변경은 보관하십시오.
이 도움이 되었기를 바랍니다
-
==============================
16.
DECLARE @columnName as varchar(100) SET @columnName = 'ColumnName' SELECT t.name AS Table, c.name AS Column, ty.name AS Type, c.max_length AS Length FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID INNER JOIN sys.types ty ON c.system_type_id = ty.system_type_id WHERE c.name LIKE @columnName ORDER BY t.name, c.name
-
==============================
17.나는 같은 목적을 위해 이것을 사용하고는했다 :
나는 같은 목적을 위해 이것을 사용하고는했다 :
select * from INFORMATION_SCHEMA.COLUMNS where TABLE_CATALOG= 'theDatabase' and COLUMN_NAME like 'theCol%'
-
==============================
18.희망이 중복 답변을하지 않습니다,하지만 내가 좋아하는 것은 보통의 나를 (나는 그 필드 이름 (뿐만 아니라 테이블을 찾고 값을 검색 할 수 있도록 SQL 문 내에서 SQL 문을 생성하는 것입니다 나 그때)을 찾고 열 이름의 ID에 관련된 정보를 필요한 삭제를 위해 :
희망이 중복 답변을하지 않습니다,하지만 내가 좋아하는 것은 보통의 나를 (나는 그 필드 이름 (뿐만 아니라 테이블을 찾고 값을 검색 할 수 있도록 SQL 문 내에서 SQL 문을 생성하는 것입니다 나 그때)을 찾고 열 이름의 ID에 관련된 정보를 필요한 삭제를 위해 :
SELECT 'Select * from ' + t.name + ' where ' + c.name + ' = 148' AS SQLToRun FROM sys.columns c, c.name as ColName, t.name as TableName JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%ProjectID%'
그럼 복사 할 수 있습니다 내 1 열 "SQLToRun"를 실행 붙여 넣기 ... 그때 '에서 삭제'와 '에서 "선택 *를 교체하고 그것은 나를 그 주어진 ID에 대한 참조를 삭제할 수 있습니다! 당신이 그렇게 파일에 결과를 기록 단지의 경우를 가지고있다.
참고 **** 당신이 당신의 당신의 삭제 문을 실행하기 전에 어떤 bakup 테이블을 제거합니다 ...
SELECT 'Delete from ' + t.name + ' where ' + c.name + ' = 148' AS SQLToRun FROM sys.columns c, c.name as ColName, t.name as TableName JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%ProjectID%'
-
==============================
19.
SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%Label%' ORDER BY schema_name, table_name;
-
==============================
20.오라클처럼이있는 테이블과 열을 찾을 수 있습니다 :
오라클처럼이있는 테이블과 열을 찾을 수 있습니다 :
select table_name, column_name from user_tab_columns where column_name like '%myname%';
-
==============================
21.나뿐만 아니라 조회수를 포함 한 이상 그냥 대답을 개선하고 연접 스키마 및 테이블 /보기 함께 결과가 더 분명하게.
나뿐만 아니라 조회수를 포함 한 이상 그냥 대답을 개선하고 연접 스키마 및 테이블 /보기 함께 결과가 더 분명하게.
DECLARE @COLUMNNAME AS VARCHAR(100); SET @COLUMNNAME = '%Absence%'; SELECT CASE WHEN [T].[NAME] IS NULL THEN 'View' WHEN [T].[NAME] = '' THEN 'View' ELSE 'Table' END AS [TYPE], '[' + [S].[NAME] + '].' + '[' + CASE WHEN [T].[NAME] IS NULL THEN [V].[NAME] WHEN [T].[NAME] = '' THEN [V].[NAME] ELSE [T].[NAME] END + ']' AS [TABLE], [C].[NAME] AS [COLUMN] FROM [SYS].[SCHEMAS] AS [S] LEFT JOIN [SYS].[TABLES] AS [T] ON [S].SCHEMA_ID = [T].SCHEMA_ID LEFT JOIN [SYS].[VIEWS] AS [V] ON [S].SCHEMA_ID = [V].SCHEMA_ID INNER JOIN [SYS].[COLUMNS] AS [C] ON [T].OBJECT_ID = [C].OBJECT_ID OR [V].OBJECT_ID = [C].OBJECT_ID INNER JOIN [SYS].[TYPES] AS [TY] ON [C].[SYSTEM_TYPE_ID] = [TY].[SYSTEM_TYPE_ID] WHERE [C].[NAME] LIKE @COLUMNNAME GROUP BY '[' + [S].[NAME] + '].' + '[' + CASE WHEN [T].[NAME] IS NULL THEN [V].[NAME] WHEN [T].[NAME] = '' THEN [V].[NAME] ELSE [T].[NAME] END + ']', [T].[NAME], [C].[NAME], [S].[NAME] ORDER BY '[' + [S].[NAME] + '].' + '[' + CASE WHEN [T].[NAME] IS NULL THEN [V].[NAME] WHEN [T].[NAME] = '' THEN [V].[NAME] ELSE [T].[NAME] END + ']', CASE WHEN [T].[NAME] IS NULL THEN 'View' WHEN [T].[NAME] = '' THEN 'View' ELSE 'Table' END, [T].[NAME], [C].[NAME];
-
==============================
22.이 쿼리를 시도 할 수 있습니다 :
이 쿼리를 시도 할 수 있습니다 :
USE AdventureWorks GO SELECT t.name AS table_name, SCHEMA_NAME(schema_id) AS schema_name, c.name AS column_name FROM sys.tables AS t INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID WHERE c.name LIKE '%myName%'
-
==============================
23.
Create table #yourcolumndetails( DBaseName varchar(100), TableSchema varchar(50), TableName varchar(100), ColumnName varchar(100), DataType varchar(100), CharMaxLength varchar(100)) EXEC sp_MSForEachDB @command1='USE [?]; INSERT INTO #yourcolumndetails SELECT Table_Catalog ,Table_Schema ,Table_Name ,Column_Name ,Data_Type ,Character_Maximum_Length FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME like ''origin''' select * from #yourcolumndetails Drop table #yourcolumndetails
-
==============================
24.나는 내 눈을 피하지 않았다 테이블과 뷰에 대한 뭔가를 원했다.
나는 내 눈을 피하지 않았다 테이블과 뷰에 대한 뭔가를 원했다.
질문
SELECT t.TABLE_TYPE AS [Type], c.TABLE_NAME AS [Object], c.COLUMN_NAME AS [Column] FROM INFORMATION_SCHEMA.COLUMNS AS c LEFT JOIN INFORMATION_SCHEMA.TABLES AS t ON t.TABLE_CATALOG = c.TABLE_CATALOG AND t.TABLE_SCHEMA = c.TABLE_SCHEMA AND t.TABLE_NAME = c.TABLE_NAME WHERE c.COLUMN_NAME LIKE '%myName%' ORDER BY [Type], [Object], [Column]
결과
Type Object Column ---------------------------- BASE TABLE Table1 myName1 BASE TABLE Table2 myName2 VIEW View1 myName1 VIEW View2 myName2
-
==============================
25.다음은 사이베이스 데이터베이스에 대한 작업 솔루션입니다
다음은 사이베이스 데이터베이스에 대한 작업 솔루션입니다
select t.table_name, c.column_name from systab as t key join systabcol as c where c.column_name = 'MyColumnName'
-
==============================
26.우리는 목적을 위해 sp_columns를 사용할 수 있습니다.
우리는 목적을 위해 sp_columns를 사용할 수 있습니다.
sp_columns 'table name', null, null, '%column name%'
-
==============================
27.열 이름을 지정한 모든 테이블을 표시하는 SQL 쿼리 :
열 이름을 지정한 모든 테이블을 표시하는 SQL 쿼리 :
SELECT SCHEMA_NAME(schema_id) + '.' + t.name AS 'Table Name' FROM sys.tables t INNER JOIN sys.columns c ON c.object_id = t.object_id WHERE c.name like '%ColumnName%' ORDER BY 'Table Name'
-
==============================
28.여기에 귀하의 질문에 대한 대답은
여기에 귀하의 질문에 대한 대답은
SELECT c.name AS ColumnName, t.name AS TableName FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%myName%';
from https://stackoverflow.com/questions/4849652/find-all-tables-containing-column-with-specified-name-ms-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 저장 프로 시저와 DbContext.Database.SqlQuery <TElement> (SQL, PARAMS)를 사용 하는가? EF 코드 첫 번째 CTP5 (0) | 2020.03.15 |
---|---|
[SQL] SQL 서버로 가져 오기 CSV 파일 (0) | 2020.03.15 |
[SQL] 나는 SQL 저장 프로 시저에 입력 매개 변수로 열 이름을 전달할 수 있습니다 (0) | 2020.03.15 |
[SQL] PostgreSQL의 '분에 의해'쿼리에 대한 행의 수를 실행 (0) | 2020.03.15 |
[SQL] JDBC와 일괄 삽입 할 수있는 효율적인 방법 (0) | 2020.03.15 |