2009-10-19 8 views
7

Chcę uzyskać dostęp do wszystkich konkretnych widoków konkretnej tabeli w Sqlite. Wiem, że mogę uzyskać listę wszystkich dostępnych tabel w bazie danych przy użyciu sqlite_masterJak wyświetlić wszystkie dostępne widoki konkretnej tabeli w SQLite?

SELECT name from sqlite_master WHERE type='table'; 

oraz wykaz wszystkich dostępnych widoków korzystając

SELECT name from sqlite_master WHERE type ='view'; 

Ale chcę, aby znaleźć wszystkie dostępne widoki dla konkretna tabela. Jak mogę to zrobić ?

Odpowiedz

1

Użyj funkcji charindex w extension-functions.c, aby wyszukać w kolumnie Sql w sqlite_master nazwę tabeli.

przedłużenie-functions.c (patrz na dole this page) to moduł użytkownik-przyczyniły który zapewnia funkcje matematyczne i ciągów rozszerzeń do zapytań SQL, stosując ładowalny mechanizm rozszerzeń.

Twoje zapytanie końcowy powinien wyglądać mniej więcej tak (nie sprawdzone)

SELECT name from sqlite_master 
    WHERE type ='view' AND charindex(Sql, "tableName") > 0; 
3

ma potrzeby stosowania przedłużacza-functions.c; wystarczy użyć operatora „jak”:

SELECT name FROM sqlite_master WHERE type = 'view' and sql LIKE "%_tablename_%"; 

dostaniesz fałszywe wyniki, oczywiście, jeśli masz nazwy tabel, które zawierają inne nazwy tabel jak podciągi, lub które są podciągi z common SQL zarezerwowanych słowa (takie jak „tutaj "lub" rom "). Możesz go wyeliminować następująco:

SELECT name FROM sqlite_master WHERE type = 'view' AND sql LIKE "% FROM %tablename% WHERE %"; 

pod warunkiem, że widoki, które próbujesz znaleźć, są zgodne z typowym modelem.

Powiązane problemy