Je voudrais faire quelque chose comme ça, par exemple, utiliser des caractères generics dans la clause in:
SELECT * FROM mytable WHERE keywords IN ('%test%', '%testing%')
Ce n'est pas pris en charge dans SQL Server …. Existe-t-il un autre moyen d'y parvenir …
Vous cherchez autre chose que:
SELECT * FROM mytable WHERE keywords like '%test%' or keywords like '%testing%' or.....
Non, seulement une autre façon que je peux penser est de se joindre à une table temporaire, mais alors vous devez éliminer les lignes en double.
Cette requête de votre part est terriblement inefficace car elle va incalculablement numériser le tableau. Vous devriez peut-être envisager de séparer les mots-keys ou d'introduire un index de text intégral.
Si vous souhaitez searchr des searchs en text intégral, je vous recommand d'examiner certains des poids lourds tels que sphinx ou lucene lorsque vous évaluez la solution de text intégral Sql Server.
SELECT DISTINCT * FROM mytable M JOIN ( SELECT '%test%' AS pattern UNION ALL SELECT '%testing%' ... ) foo ON M.keywords LIKE foo.Pattern
Peut être une table CTE ou une table temporaire
Ce n'est pas pris en charge dans MS SQL …. Y at-il un autre moyen de l'atteindre?
Oui, search en text intégral. Au less pour les caractères generics de préfixe .
Vous pouvez utiliser l' expression régulière pour ce faire. Dans une expression régulière, vous pouvez définir autant de motifs que vous le souhaitez dans une expression.
Il y a beaucoup d'article sur la correspondance d'expressions régulières dans MS SQL SERVER. J'ai utilisé RLIKE dans MySQL pour faire correspondre les expressions régulières.
J'ai également attaché link1 & link2 pour la correspondance d'expression régulière de MS SQL SERVER.