2013-06-14 20 views
7

Sto avendo un nome di tabella Product contiene 3 colonne come:L'uso della contiene() in SQL Server

Product-id 
name 
Price 

In name colonna, tutti i nomi dei prodotti sono presenti.

Esempio: 1340 GPS, GPS 1340T ecc

Quando scrivo

select top 10 * from product where contains(name,'1340'); 

Risultato 1 fila 1340 GPS

ma quando cerco

select top 10 * from product where name like '%1340%'; 

allora il risultato è 1340 GPS and 1340T GPS.

In realtà il mio requisito è che userò ma deve mostrare entrambe le righe come l'operatore LIKE.

Come fare:?

Si prega di aiutare

Grazie in anticipo

+1

Perché insisti con 'contiene()'? – Raptor

+0

ho bisogno di ricerca full text – user1926138

+0

c'è un modo per risolvere il problema di cui sopra o è impossibile ??????? – user1926138

risposta

10

Ecco retta via per fare questo. puoi usare "*" prima di contenere la sintassi stessa dell'operatore simile. ma è necessario utilizzare il doppio preventivo prima e dopo la stringa di ricerca. controlla la seguente query:

SELECT * 
FROM product 
WHERE CONTAINS(name,'"*1340*"'); 

funzionerà sicuramente.

+0

Non è necessario utilizzare * nella ricerca di testo completo. –

+0

Solo una nota: non puoi fare un prefisso di * con Contains. Funziona solo in questo esempio perché 1340 è l'inizio della parola. Ad esempio, se fosse T1340, questo non funzionerebbe. – bech

1

select * from prodotto in cui FREETEXT (prodotto. ' "1340"')

Problemi correlati