2016-04-03 10 views
0

Ich möchte Suche nach Adressbuch in PostgresSuche in allen Datenbankfelder

AddressBook (pid, tag, address1, address2, city, stateProv, postalCode, ...) 

eingereicht erstellen, wenn ich einige String-Typ in Recherchen- würde Ich mag alle verfügbaren Daten aus allen Spalten der Tabelle erhalten. Was ist die richtige SQL-Abfrage für diesen Fall?

+0

Etwas wie [hier] (http://stackoverflow.com/questions/7922744/how-can-i-search-all-columns-in-a-table) sollte funktionieren. Sie könnten auch den FULL-TEXT-Index verwenden. – lad2025

+0

Darf ich wissen, warum ich eine negative Bewertung erhalte? – user1285928

+0

Mögliches Duplikat von [Wie suche ich einen bestimmten Wert in allen Tabellen (PostgreSQL)?] (Http://stackoverflow.com/questions/5350088/how-to-search-a-specific-value-in-all-tables- postgresql) – Tony

Antwort

1

Ich denke, man in einem Parameter des Wertes jeden Mals wird vorbei der Benutzer den Wert der Methode jedes Mal Aufruf aktualisiert, so dass Sie etwas tun könnten:

-- DECLARE @yourSearch varchar(max); 
-- This will be passed in your server side code 

    SELECT * 
    FROM AddressBook 
    WHERE pid LIKE '%@yourSearch%' OR 
      tag LIKE '%@yourSearch%' OR 
      address1 LIKE '%@yourSearch%' OR 
      address2 LIKE '%@yourSearch%' OR 
      city LIKE '%@yourSearch%' OR 
      stateProv LIKE '%@yourSearch%' OR 
      postalCode LIKE '%@yourSearch%' 

Dies umso String, wenn Sie Spiele bekommt wollen eine genaue Übereinstimmung finden Sie so etwas tun könnte: Sie

SELECT * 
FROM AddressBook 
WHERE @yourSearch IN (pid, tag, address1, address2, city, stateProv, postalCode) 

Bitte beachten Sie sagte, dass alle so abgefragt ich es auch gegen die ID der Adresse, das ich von Gedanken yo u würde der Benutzer nicht will zu sehen, aber ich hielt es dort nur für den Fall - löscht jede Instanz pid wenn Sie nicht die ID in der Abfrage zurückgegeben werden sollen und Ihre Spalten Namen angeben statt *