Sto eseguendo due query su un tavolo.SQL: Like vs Contains - Diversi risultati
SELECT MSDS FROM dbo.MSDSSearch3 WHERE CONTAINS(MSDS, 'STYCAST')
E
SELECT MSDS FROM dbo.MSDSSearch3 WHERE MSDS like '%STYCAST%'
La prima query restituirà
'STYCAST 50300 LV'
E il secondo tornerà
'STYCAST 50300 LV'
'STYCAST 2851 BLACK'
Qualcuno sa perché simili sarebbero tornati più valori di il contiene? C'è un problema con il modo in cui sono in esecuzione contiene? Grazie in anticipo.
Quale versione di SQL Server? Se nel 2008 è possibile ottenere una certa visibilità nel parser con 'SELECT * FROM sys.dm_fts_parser ('" STYCAST 2851 BLACK "", 1033, 0,0) 'Non riesco a vedere alcun motivo per cui le stringhe verrebbero trattate in modo diverso. –
Domanda interessante, sei sicuro che entrambi i valori siano esattamente gli stessi? come in nessun carattere di spaziatura iniziale/finale. Questo potrebbe causare questo problema in quanto CONTAINS corrisponderebbe esattamente al tuo testo, mentre il LIKE corrisponderebbe al tuo testo + qualsiasi lato di esso – Purplegoldfish
Sembra un caso in cui il tuo catalogo di testo completo non è aggiornato. Potresti provare a ricostruirlo con un [ALTER FULLTEXT CATALOG] (http://msdn.microsoft.com/en-us/library/ms176095.aspx). –