J'essaie de résoudre une requête qui utilise la méthode Contient() pour rechercher un index de texte intégral basé sur un paramètre TSQL passé dans la procédure stockée. Le Contient doit faire un prefix_search car il sera utilisé pour faire correspondre des mots partiels (tels que les 5 premiers caractères d'un numéro de police).TSQL Parameterized CONTAINS
Ceci est ma requête.
CREATE PROCEDURE [SearchMail]
(
@AccountId int,
@SearchTerm VARCHAR(100)
)
AS
SET NOCOUNT ON
BEGIN
SELECT MailId, AccountId, ServerId, ToAddress, FromAddress, DateSent, DateReceived ,
[Subject], Body, PolicyNumber, ProducerNumber, IsRead, IsDeleted, IsImaged,
DateUpdated, DateDeleted, DateImaged, UpdatedBy, DeletedBy, ImagedBy
FROM MailMessages
WHERE AccountId = @AccountId
AND CONTAINS(([Subject], Body, PolicyNumber, ProducerNumber, FromAddress), ' "' + @SearchTerm + '*" ')
AND IsDeleted = 0
AND IsImaged = 0
END
GO
Mais quand je tente d'exécuter cela, Enterprise Manager répond avec une erreur: Syntaxe incorrecte près de « + »
À ce stade, je ne suis pas sûr ce que je peux être en train de faire mal.
J'essaie de trouver quelque chose qui commence par le searchTerm. Par exemple, si le terme de recherche est 'CNM000', je voudrais qu'il corresponde à 'CNM00' et 'CNM0003245' –