Muszę napisać zapytanie na serwerze SQL, aby uzyskać listę kolumn w określonej tabeli, powiązane typy danych (o długości) i jeśli nie są one puste. I udało mi się zrobić tak wiele.
Ale teraz muszę także uzyskać w tej samej tabeli kolumnę - TRUE
jeśli ta kolumna jest kluczem podstawowym.
Jak mam to zrobic?
Moje oczekiwane wyniki to:
Column name | Data type | Length | isnull | Pk
sql
sql-server
sql-server-2005
Shrayas
źródło
źródło
Odpowiedzi:
Aby uniknąć powielania wierszy w niektórych kolumnach, użyj id_typu_użytkownika zamiast id_typu_systemu.
Wystarczy zastąpić
YourTableName
rzeczywistą nazwą tabeli - działa w SQL Server 2005 i nowszych wersjach.Jeśli korzystasz ze schematów, zamień
YourTableName
naYourSchemaName.YourTableName
gdzieYourSchemaName
jest rzeczywista nazwa schematu iYourTableName
rzeczywista nazwa tabeli.źródło
LEFT OUTER JOIN sys.index_columns ic LEFT OUTER JOIN sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id ON ic.object_id = c.object_id AND ic.column_id = c.column_id AND i.is_primary_key=1
Procedura składowana sp_columns zwraca szczegółowe informacje o tabeli.
źródło
Możesz użyć zapytania:
aby uzyskać wszystkie potrzebne metadane oprócz informacji o Pk.
źródło
W SQL 2012 możesz użyć:
To da ci nazwy kolumn wraz z ich właściwościami.
źródło
Spróbuj tego:
źródło
Aby mieć pewność, że uzyskasz odpowiednią długość, musisz rozważyć typy Unicode jako szczególny przypadek. Zobacz kod poniżej.
Aby uzyskać więcej informacji, zobacz: https://msdn.microsoft.com/en-us/library/ms176106.aspx
źródło
Rozwijając odpowiedź Alexa, możesz to zrobić, aby uzyskać ograniczenie PK
Musiałem przegapić, że chcesz, aby flaga określała, czy dana kolumna była częścią PK, a nie nazwą ograniczenia PK. Do tego użyłbyś:
źródło
zapisz nazwę tabeli w edytorze zapytań wybierz nazwę i naciśnij klawisze Alt + F1, a to przyniesie wszystkie informacje z tabeli.
źródło
Uruchom
SELECT *
w powyższej instrukcji, aby zobaczyć, co zwraca informacja_schema.columns.Odpowiedź na to pytanie była wcześniej udzielona - https://stackoverflow.com/a/11268456/6169225
źródło
Jestem trochę zaskoczony, że nikt nie wspomniał
źródło
źródło
Rzucając kolejną odpowiedź na pierścień, otrzymasz te kolumny i więcej:
źródło
Aby wyszukać, która kolumna jest w której tabeli na podstawie typu danych wyszukiwania dla trzech różnych tabel w jednej bazie danych. To zapytanie można rozwinąć do tabel „n”.
źródło
Znajdź wynik połączenia dla typu danych i długości i można go zerować w postaci „NULL” i „Not null”. Użyj poniższego zapytania.
znajdziesz wynik, jak pokazano poniżej.
Dziękuję Ci.
źródło
źródło
UWAGA: W NIEKTÓRYCH IDE PRZED WYBRANIEM N PRACUJE LUB W NIEKTÓRYCH IDE BEZ PRACY
źródło
Nie ma tutaj klucza podstawowego, ale może to pomóc innym użytkownikom, którzy chcieliby mieć nazwę tabeli z nazwą pola i podstawowymi właściwościami pola
źródło
Właśnie stworzyłem marc_s „prezentację gotową”:
źródło