තීරු අඩංගු වගු නම් විමසීමට හැකිද?
LIKE '%myName%'
?
තීරු අඩංගු වගු නම් විමසීමට හැකිද?
LIKE '%myName%'
?
Answers:
සෙවුම් වගු:
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;
INFORMATION_SCHEMA
SQL සේවාදායකයේ ඇතුළත් කර ඇති දර්ශන INFORMATION_SCHEMA සඳහා වන ISO සම්මත අර්ථ දැක්වීමට අනුකූල වේ. , sys.columns
, sys.tables
මයික්රොසොෆ්ට් අනවශ්යය සේවාදායකය විශේෂිත වේ.
TABLE_SCHEMA
ඔබගේ තෝරාගත් ලැයිස්තුවට ඇතුළත් කිරීම ප්රයෝජනවත් වේ. තවමත් +1 එය හොඳ පිළිතුරක් නිසා.
අපට පහත සින්ටැක්ස් භාවිතා කළ හැකිය: -
select * from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME like '%clientid%'
order by TABLE_NAME
INFORMATION_SCHEMA
කොටසක් වන ANSI සම්මත
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');
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%'
ඔබේ වගන්තියේ පෙරීම සඳහා අමතර කොන්දේසි භාවිතා කිරීමට ඔබ තෝරාගෙන ඇති හෝ නොකළ හැකි යෝජනා ක්රම, වගු සහ තීරු පිළිබඳ අමතර තොරතුරු මෙහි දී ඔබට ලබා දෙනු ඇත. උදාහරණයක් ලෙස, ඔබට අවශ්ය වන්නේ අගයන් එකතු කළ යුතු ක්ෂේත්ර පමණි
and c.is_nullable = 0
ඔබට වෙනත් කොන්දේසි එකතු කළ හැකිය, තෝරාගත් වගන්තියේ තීරු ද මෙම සිරස් ආකාරයෙන් එකතු කළෙමි, එවිට ඔබේ අවශ්යතා මත පදනම්ව නැවත සකස් කිරීම, ඉවත් කිරීම, නැවත නම් කිරීම හෝ වෙනත් අය එකතු කිරීම පහසු විය. විකල්පයක් ලෙස ඔබට T.Name භාවිතා කර හුදෙක් වගු සෙවිය හැකිය. එය ඉතා අභිරුචිකරණය කළ හැකිය.
විනෝද වන්න.
ඔබ තෙවන පාර්ශවීය මෙවලම් වලට වැඩි නම් එහි විකල්ප රාශියක් ඇත:
ඔබේ දත්ත ගබඩාවේ සංකේතාත්මක වස්තු (දර්ශන, ක්රියා පටිපාටි, කාර්යයන්) අඩංගු නම් මේවා ඉතා ප්රයෝජනවත් වේ. මන්ද ඔබට පද්ධති වගු භාවිතයෙන් පහසුවෙන් සෙවිය නොහැකි බැවිනි.
ඔබ සමඟ සම්බන්ධ වීමට යෝජනා කරන බොහෝ දෙනෙකුට sys.table with sys.columns
පහත කේතය භාවිතා කළ හැක්කේ මන්දැයි මම නොදනිමි :
Select object_name(object_id) as TableName,* from SYS.columns where name LIKE '%MyName%'
හෝ
ඔබට යෝජනා ක්රමයේ නමද අවශ්ය නම්:
Select * from INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME LIKE '%MyName%'
ඔබට වගුවේ නම අවශ්ය නම් ඔබට ධාවනය කළ හැකිය:
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
කොන්ක්රීට් ලක්ෂණය 2012 දී එකතු කරන ලද බව සඳහන් කිරීම වටී. 2008r2 සඳහා සහ ඊට පෙර + නූල් සංයුක්ත කිරීම සඳහා + භාවිතා කරන්න.
මම මෙය පළ කළ දා සිට මම ප්රක්ශේපණය නැවත සකස් කර ඇත්තෙමි. එය දැන් තව ටිකක් දියුණු නමුත් බොහෝ අවුල් සහගත පෙනුමක් ඇත (නමුත් එය ප්රොක් එකක ඇත, එබැවින් ඔබ එය කිසි විටෙකත් නොදකිනු ඇත) සහ එය වඩා හොඳින් සංයුති කර ඇත.
මෙම අනුවාදය ඔබට එය පරිපාලන දත්ත ගබඩාවක තබා පසුව ඕනෑම දත්ත සමුදායක් හරහා සෙවීමට ඉඩ දෙයි. වෙනස් කිරීම පිළිබඳව වූ decleration @db
සිට 'master'
ඔබ පෙරනිමි දත්ත වීමට අවශ්ය කැපවීෙමන් (සටහන: ඔබ භාවිතා කිරීමට වැල අකාර වෙනස් නොකරන්නේ නම් CONCAT () යන ශ්රිතය භාවිතා කරන එකම 2012+ සමඟ කටයුතු කරනු ඇත +
) මත.
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
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;
එය පිනල් සර් බ්ලොග් අඩවියෙනි
SELECT COLUMN_NAME, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%myName%'
SELECT [TABLE_NAME] ,
[INFORMATION_SCHEMA].COLUMNS.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME LIKE '%NAME%' ;
පහත දැක්වෙන විමසුම මඟින් '% myName' වැනි ක්ෂේත්ර නාමයක් ඇති දත්ත සමුදායේ නිශ්චිත වගු නාම ලබා දෙනු ඇත.
SELECT distinct(TABLE_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%myName%'
මෙන්න ඔබේ ප්රශ්නයට පිළිතුරයි
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%';
මම එය උත්සාහ කර ඇති අතර මෙය හොඳින් ක්රියාත්මක වේ
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;
YourDatbaseName එක ඔබේ දත්ත ගබඩාවටත්, YourcolumnName එකත් ඔබේ තීරුවේ නමට පමණක් වෙනස් කරන්න.
මෙය උදව් වී ඇතැයි සිතමි
මගේ ඇස්වලට ලේ ගැලීමක් නොවන මේස සහ දර්ශන සඳහා මට යමක් අවශ්ය විය .
විමසුම
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]
ප්රති ult ලය
Type Object Column
----------------------------
BASE TABLE Table1 myName1
BASE TABLE Table2 myName2
VIEW View1 myName1
VIEW View2 myName2
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
මම මෙය එකම අරමුණක් සඳහා භාවිතා කළ අතර එය ක්රියාත්මක විය:
select * from INFORMATION_SCHEMA.COLUMNS
where TABLE_CATALOG= 'theDatabase'
and COLUMN_NAME like 'theCol%'
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;
ඔරකල් මෙන් ඔබට මේ සමඟ වගු සහ තීරු සොයාගත හැකිය:
select table_name, column_name
from user_tab_columns
where column_name
like '%myname%';
මෙය අනුපිටපත් පිළිතුරක් නොවන බව මම විශ්වාස කරමි, නමුත් මා කිරීමට කැමති වන්නේ වර්ගීකරණ ප්රකාශයක් තුළ වර්ග ප්රකාශයක් ජනනය කිරීමයි, එමඟින් මා සොයන අගයන් සෙවීමට මට ඉඩ සලසයි (එම ක්ෂේත්ර නාම සහිත වගු පමණක් නොවේ (එය සාමාන්යයෙන් මා සොයන තීරු නාමයේ හැඳුනුම්පත හා සම්බන්ධ ඕනෑම තොරතුරක් මකා දැමීමට මට අවශ්ය වේ):
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%'
එවිට මට මගේ පළමු තීරුව වන "SQLToRun" පිටපත් කර ඇලවිය හැකිය ... ඉන්පසු මම "තෝරන්න * වෙතින්" 'මකන්න වෙතින්' වෙනුවට ආදේශ කරමි. එමඟින් එම හැඳුනුම්පතේ ඕනෑම සඳහනක් මකා දැමීමට මට ඉඩ සලසයි! මෙම ප්රති results ල ගොනු කිරීමට ලියන්න එවිට ඔබ ඒවා තිබේ නම්.
සටහන **** ඔබගේ මකාදැමීමේ ප්රකාශය ක්රියාත්මක කිරීමට පෙර ඕනෑම බේකප් වගුවක් ඉවත් කිරීමට වග බලා ගන්න ...
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%'
ඔබට මෙම විමසුම උත්සාහ කළ හැකිය:
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%'
ඉහත පිළිතුරු වැඩිදියුණු කිරීම සඳහා මම දර්ශන ඇතුළත් කර ඇති අතර ප්රති Sche ල වඩාත් පැහැදිලිව පෙනෙන පරිදි යෝජනා ක්රමය සහ වගුව / දර්ශනය එකට එකතු කර ඇත.
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];
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
මෙන්න සයිබේස් දත්ත සමුදායක් සඳහා ක්රියාකාරී විසඳුමක්
select
t.table_name,
c.column_name
from
systab as t key join systabcol as c
where
c.column_name = 'MyColumnName'
අපට ඒ sp_columns
සඳහා භාවිතා කළ හැකිය .
sp_columns 'table name', null, null, '%column name%'