J'ai une table Products dans une base de données SQL Server et je dois dépanner une procédure stockée héritée qui utilise l'indexation de texte intégral. Pour notre propos ici, supposons que la table Produits a deux champs ID, Mots clés. Et le champ Mots-clés est rempli avec les éléments suivants:Problème SQL: L'utilisation de CONTAINS() ne fonctionne pas, mais LIKE fonctionne correctement
ROLAND SA-300 Ce Roland SA-300 est en état MINT!
Quand je lance la déclaration suivante, je suis en mesure de récupérer l'enregistrement:
SELECT * FROM Products WHERE Keywords LIKE '%SA-300%'
Cependant, quand je lance l'un des énoncés suivants j'obtenir aucun résultat:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' SA-300 ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'SA-300')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"SA-300"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*SA-300*"')
Mais je sais que la fonction CONTAINS() fonctionne parce que j'obtiens des résultats quand je cours l'un de ceux-ci:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' Roland ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"Roland"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*Roland*"')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
Je dois comprendre pourquoi la fonction CONTAINS() ne fonctionne pas sur le terme 'SA-300'. Je suis nouveau pour les index en texte intégral, donc toute aide est appréciée.
Aucun indice, mais avez-vous vérifié que l'index est à jour? – MichaelGG