2016-04-03 1 views
0

Je veux créer la recherche déposée pour le carnet d'adresses dans PostgresRechercher dans tous les champs de la base

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

Lorsque je tape une chaîne en recherche déposée je voudrais obtenir toutes les données disponibles à partir de toutes les colonnes de table. Quelle est la requête SQL appropriée pour ce cas?

+0

Quelque chose comme [ici] (http://stackoverflow.com/questions/7922744/how-can-i-search-all-columns-in-a-table) devrait fonctionner. Vous pouvez également envisager d'utiliser l'index FULL-TEXT – lad2025

+0

Puis-je savoir pourquoi je reçois une note négative? – user1285928

+0

Copie possible de [Comment rechercher une valeur spécifique dans toutes les tables (PostgreSQL)?] (Http://stackoverflow.com/questions/5350088/how-to-search-a-specific-value-in-all-tables- postgresql) – Tony

Répondre

1

Je suppose que vous passerez dans un paramètre de la valeur à chaque fois que l'utilisateur met à jour la valeur appelant la méthode à chaque fois que vous pourriez faire quelque chose comme ceci:

-- 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%' 

Cela obtenir toutes les sous-chaîne correspond si vous veulent trouver une correspondance exacte que vous pourriez faire quelque chose comme ceci:

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

S'il vous plaît noter que vous dit tout ce que donc j'interrogé même contre l'id de l'adresse que je la pensée yo u ne voudrais pas que l'utilisateur de voir mais je l'ai gardé là-bas juste Incase - supprimer toutes les occurrences de pid si vous ne voulez pas l'ID retourné dans la requête et indiquez vos colonnes noms au lieu de *