2009-10-19 12 views
7

Sqlite'deki herhangi bir tablonun tüm belirli görünümlerine erişmek istiyorum. Ben sqlite_masterBelirli bir tablonun mevcut görünümlerini SQLite'de nasıl listeleyebilirim?

SELECT name from sqlite_master WHERE type='table'; 

Ve

SELECT name from sqlite_master WHERE type ='view'; 

kullanan mevcut tüm görüşlerin listesini kullanarak veritabanında mevcut tüm tabloların listesini alabilirsiniz biliyorum Ama için mevcut tüm görünümleri bulmak istiyoruz belirli bir tablo. Bunu nasıl yaparım ?

cevap

1

Tablonuzun adı için sqlite_master numaralı Sql sütununda arama yapmak için extension-functions.c dosyasındaki charindex işlevini kullanın.

uzatma-functions.c (this page alt kısmına bakın) yüklenebilir uzantıları mekanizmasını kullanarak, SQL sorguları için matematiksel ve dize uzatma fonksiyonları sağlayan bir kullanıcı katkısıyla modülüdür.

Nihai sorgu böyle bir şey (test) görünmelidir:

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

uzatma-functions.c kullanmak gerek yok; Sadece "GİBİ" operatörünü kullanın:

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

Sen alacak yanlış maçları, elbette, altdizgelerin gibi diğer tablo adlarını içeren veya "Burada gibi yaygın SQL ayrılmış kelimelerin altdizgelerin (ki tablo adları varsa "veya" rom "). Sen Aşağıdakilerden tarafından ikincisi ortadan kaldırabilir:

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

tipik modele uygun bulmaya çalışıyorsanız manzarasına.

İlgili konular