2016-04-03 2 views
0

Я хочу создать поиск, поданную в адресной книге в PostgresПоиск во всех полях базы данных

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

Когда я ввожу некоторые строки в поиск подал я хотел бы получить все доступные данные из всех столбцов таблицы. Каков правильный SQL-запрос для этого случая?

+0

Что-то вроде [здесь] (http://stackoverflow.com/questions/7922744/how-can-i-search-all-columns-in-a-table) должно работать. Вы также можете рассмотреть возможность использования индекса FULL-TEXT – lad2025

+0

Могу ли я узнать, почему я получаю отрицательный рейтинг? – user1285928

+0

Возможный дубликат [Как найти определенное значение во всех таблицах (PostgreSQL)?] (Http://stackoverflow.com/questions/5350088/how-to-search-a-specific-value-in-all-tables- postgresql) – Tony

ответ

1

Я думаю, вы проездом в параметре значения каждый раз пользователь обновляет значение вызова метода каждый раз, так что вы могли бы сделать что-то вроде этого:

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

Это позволит получить все подстроки если вы хочу найти точное совпадение вы могли бы сделать что-то вроде этого:

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

Пожалуйста, обратите внимание, вы сказал, что все так я опрошен его даже против идентификатора адреса, который я бы мыслями йа у не хотелось бы, чтобы пользователь видел , но я держал его там просто упаковывает - удалить каждый экземпляр pid если вы не хотите, идентификатор, возвращаемый в запросе и указать столбцы имена вместо *

Смежные вопросы