valeurs - sql ne contient pas




Trouver toutes les tables contenant une colonne avec le nom spécifié-MS SQL Server (19)

Est-il possible d'interroger les noms de tables contenant des colonnes

LIKE '%myName%'

?


Cela devrait fonctionner:

SELECT name 
FROM sysobjects 
WHERE id IN ( SELECT id 
              FROM syscolumns 
              WHERE name like '%column_name%' )

Comme Oracle, vous pouvez trouver des tables et des colonnes avec ceci:

select table_name, column_name
from user_tab_columns 
where column_name 
like '%myname%';

J'espère que ce n'est pas une réponse en double, mais ce que j'aime faire est de générer une instruction sql dans une instruction sql qui me permettra de rechercher les valeurs que je cherche (pas seulement les tables avec ces noms de champs nécessaire pour moi de supprimer ensuite toute information liée à l'identifiant du nom de la colonne que je cherche):

  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%'

Ensuite, je peux copier et coller exécuter ma 1ère colonne "SQLToRun" ... puis je remplace le "Select * from" par "Delete from" et il me permet de supprimer toutes les références à cet ID donné! Ecrivez ces résultats dans le fichier de sorte que vous les avoir juste au cas où.

NOTE **** Assurez-vous d'éliminer toutes les tables de bakup avant d'exécuter votre instruction de suppression ...

  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%'

Je ne sais pas pourquoi tant d'entre vous suggérant de rejoindre sys.table with sys.columns vous pouvez simplement utiliser le code ci-dessous:

Select object_name(object_id) as TableName,* from SYS.columns where name LIKE '%MyName%'

ou

Si vous voulez également un nom de schéma:

Select * from  INFORMATION_SCHEMA.COLUMNS
where COLUMN_NAME LIKE '%MyName%'

La requête suivante vous donnera les noms exacts de la base de données ayant le nom du champ comme '% myName'.

SELECT distinct(TABLE_NAME)
  FROM INFORMATION_SCHEMA.COLUMNS    
 WHERE COLUMN_NAME LIKE '%myName%'

Nous pouvons également utiliser la syntaxe suivante: -

select * from INFORMATION_SCHEMA.COLUMNS 
where COLUMN_NAME like '%clientid%' 
order by TABLE_NAME

Pour obtenir des informations complètes: le nom de la colonne, le nom de la table ainsi que le schéma de la table.

SELECT COLUMN_NAME, TABLE_NAME, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%col_Name%'


Vous pouvez essayer cette requête:

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%'

Vous pouvez le trouver à partir de INFORMATION_SCHEMA.COLUMNS par le filtre column_name

Select DISTINCT TABLE_NAME as TableName,COLUMN_NAME as ColumnName
     From INFORMATION_SCHEMA.COLUMNS Where column_name like '%myname%'

je viens de l'essayer et cela fonctionne parfaitement

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;

Changez seulement YourDatbaseName à votre base de données et YourcolumnName à votre nom de colonne que vous recherchez pour le reste le garde comme il est.

J'espère que cela a aidé


Rechercher des tables:

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;

Rechercher des tableaux et des vues:

SELECT      COLUMN_NAME AS 'ColumnName'
            ,TABLE_NAME AS  'TableName'
FROM        INFORMATION_SCHEMA.COLUMNS
WHERE       COLUMN_NAME LIKE '%MyName%'
ORDER BY    TableName
            ,ColumnName;

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  [TABLE_NAME] ,
        [INFORMATION_SCHEMA].COLUMNS.COLUMN_NAME
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME LIKE '%NAME%' ;

SELECT col.Name AS ColumnName, tab.Name AS TableName 
FROM sys.columns col  
     JOIN sys.tables tab   
ON col.Object_id = tab.Object_id   
WHERE col.Name LIKE '%MyName%'

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;

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; 

C'est de Pinal Sir Blog


declare @ColumnName nvarchar(max)='QbId'

Select b.Name as TableName from Sys.Columns a
Join Sys.Tables b
on a.Object_Id=b.Object_Id
where [email protected]

select table_name, column_name
from user_tab_columns where column_name like '%myname%';

Ça marche





system-tables