Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да намерите таблици, които съдържат конкретна колона в SQL Server

Макар и изключително мощен като релационна база данни, SQL Server може да бъде малко обезсърчителен понякога, когато става въпрос за търсене на основна информация за самата система от база данни.

За да облекчим тези главоболия в някаква малка част, ще разгледаме накратко как да намерим всички таблици в базата данни, които съдържат конкретно име на колона .

Изгледи на каталог на SQL сървър

Една основна концепция, която трябва да се разбере за SQL Server, е тази за catalog views , които всъщност са таблици на база данни (catalogs в този случай), които показват информация за цялата система за SQL Server Database Engine.

Запитване на системна информация

Всички catalog views са достъпни чрез SELECT SQL израз FROM конкретен каталог в sys. пространство от имена.

Например, следният израз може да се използва за преглед на информация за всички таблици на базата данни в системата чрез sys.tables каталог:

SELECT
  *
FROM
  sys.tables

Изявление LIKE и заместващ знак

Преди да влезем в това как да извлечем всички таблици с определено име, трябва накратко да проучим какво LIKE оператор прави, както и заместващият знак (% ) и как се използват заедно.

LIKE се използва в заявка, за да се определи дали определен модел от знаци (обикновено стойностите на определена column ) съвпада с форматиран низ от знаци.

LIKE често се използва и във връзка с % символ, който представлява заместващ знак при опит да съвпадне с шаблона. Когато е % В низа на шаблона присъства заместващ знак, което показва, че всякакъв символите могат да присъстват на това място на низа на шаблона и все пак да се считат за съвпадение.

Например, ако искаме да намерим всички книги, където title започва с „The“, но може да съдържа всякакви знаци след това, бихме използвали изявление по следния начин:

SELECT
  title,
  primary_author,
  published_date
FROM
  books
WHERE
  title LIKE 'The%'

Наблюдателните читатели може да осъзнаят, че горният модел не само ще съвпада със заглавия, които имат „The“ в началото, но също така и всички заглавия с думи, които просто започват с трите букви „The“. От % заместващи знаци съответстват на всякакви знаци, ако искаме да проверим само заглавия с думата „The“, добавянето на интервал е по-подходящо:

SELECT
  title,
  primary_author,
  published_date
FROM
  books
WHERE
  title LIKE 'The %'

Избор на таблици, съдържащи име на колона

С нашите основни познания и за двата catalog views и LIKE изявление, сега сме оборудвани да търсим всички таблици в нашата система, които съдържат конкретно име на колона:

SELECT
  sys.columns.name AS ColumnName,
  tables.name AS TableName
FROM
  sys.columns
JOIN sys.tables ON
  sys.columns.object_id = tables.object_id
WHERE
  sys.columns.name = 'ColumnName'

Трябва да комбинираме информация от две каталози, sys.tables и sys.columns , така че използваме JOIN изявление. Двете са свързани с object_id поле, така че ние JOIN на това поле.

Оттам нататък е лесно да изберете ColumnName и TableName от нашите резултати и накрая, разбира се, само търсене на записи, където sys.columns.name е равно на нашия ColumnName низ.

Тази заявка обаче ще намери само точни съвпадения на името на колоната. Ако искаме да намерим частични съвпадения, можем да използваме LIKE и % вместо това заместващи знаци:

SELECT
  sys.columns.name AS ColumnName,
  tables.name AS TableName
FROM
  sys.columns
JOIN sys.tables ON
  sys.columns.object_id = tables.object_id
WHERE
  sys.columns.name LIKE '%ColumnName%'

Ето го! Проста заявка за търсене на всички таблици и свързани колони с конкретно (или подобно) име на колона в тях.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Екраниране на единични кавички в SQL Server

  2. DEGREES() Примери в SQL Server

  3. SQLException :низови или двоични данни ще бъдат съкратени

  4. Избор на инструмент за наблюдение на SQL Server, който да отговаря на вашите нужди

  5. Вземете правилната част от низ в SQL Server (T-SQL)