2017-01-20 5 views
-2

Я использую содержит в своем отборном заявлении фильтровать адреса из таблицы, как показано нижеКак проверить обратное состояние с содержит в SQL сервере

DECLARE @ADDRESS VARCHAR(100) = '0 RUBIN CT APT C2' 

SET @ADDRESS = '"' + @ADDRESS + '*"' 

SELECT * FROM tbl_StreetRecords 
WHERE ZipCode = '02021' 
AND contains(CompleteAddress,@ADDRESS) 

В моей базе данных у меня есть почтовый адрес «РУБИН CT APT», не '0 RUBIN CT APT C2'. Я хочу получить данные, соответствующие адресу «RUBIN CT APT».

Я не могу использовать LIKE-оператор, потому что у меня 50 миллионов записей.

+3

Я не понимаю, почему не просто «Содержит (CompleteAddress,« RUBIN CT APT »)'? –

ответ

-2
DECLARE @ADDRESS VARCHAR(100) = '0 RUBIN CT APT C2' 

SET @ADDRESS = '"' + @ADDRESS + '*"' 

SELECT * FROM tbl_StreetRecords 
WHERE ZipCode = '02021' 
AND CHARINDEX(AddressLine1, @ADDRESS) > 0 
+3

Если вы предлагаете альтернативное решение, вы должны указать его явно, а также объяснить, почему здесь требуется альтернативное решение. – TheLostMind

0

Вы можете использовать CONTAINS с LIKE подзапроса для сопоставления только начало:

DECLARE @ADDRESS VARCHAR(100) = 'RUBIN CT APT' 

SELECT * 
FROM (
SELECT * FROM tbl_StreetRecords 
WHERE ZipCode = '02021' 
AND contains(CompleteAddress,@ADDRESS) 
) AS S1 
WHERE S1.CompleteAddress LIKE 'RUBIN CT APT%' 

Таким образом, запрос LIKE оператор будет работать с меньшим набором записей (Содержит будет использовать Полнотекстовые индексы, чтобы получить все строки, где Completeaddress содержит RUBIN CT APT, а оператор Like фильтрует результат, чтобы получить строки, где начальное значение начинается с Completeaddress)

+0

Сначала проверьте, как работает работа на SQL-сервере. Ваш запрос не вернет никакой записи. –

+0

@ Dineshalla Почему он не вернется? – Yahfoufi

+0

Содержит полные текстовые индексы, чтобы получить все строки, в которых Completeaddress содержит 'RUBIN CT APT', а оператор Like фильтрует результат, чтобы получить строки, где столбец Fulladdress начинается с этого значения. – Yahfoufi