-2
votes

Etat de recherche multiple TSQL sur plusieurs colonnes

Utilisation de SQL Server 2012.

sur notre page Web, nous avons plusieurs textes de texte. L'utilisateur peut entrer et une et cliquez sur Rechercher ou entrer dans le couple de la zone de texte, puis cliquez sur Rechercher ...

  • Prénom
  • Nom de famille
  • Ligne d'adresse
  • Code des employés
  • Langue ... (Total 7 Text Box)

    échantillon t-sql: xxx

    si @firstname n'est pas entré dans la zone de texte, puis je ne le veux pas faire partie du clause xxx

    identique ici: Si le nom de famille n'est pas entré dans la zone de texte, je ne veux pas que ce soit inclure dans le clause

    ... et ainsi de suite sur

    problème: toutes ces tables contiennent plus d'un million de lignes, donc je ne peux pas utiliser l'énoncé de cas dans où la clause due à l'impact de la performance

    existe donc une autre approche que je peux prendre pour résoudre ce problème?


0 commentaires

3 Réponses :


1
votes

Quelque chose comme ça fonctionnera pour vous.

  SELECT FirstName,
   LastName,
   Address1,
   EmployeeCode,
   OtherFields
   FROM SomeTable
   WHERE ((@FirstName IS NULL) OR ( FirstName = @FirstName)) AND
   ((@LastName IS NULL) OR ( LastName = @LastName)) AND
   ((@Address1 IS NULL) OR ( Address1 = @Address1)) AND
   ((@EmployeeCode IS NULL) OR ( EmployeeCode = @EmployeeCode))


1 commentaires

J'ai trouvé un bon article basé sur cette solution SOMMARSKOG.SE/DYN-SEARCH-2008.HTML < / a>




2
votes

Vous pouvez obtenir le même résultat en utilisant une recherche en texte intégral. Ensuite, vous n'avez pas besoin de créer également une carrière dynamique. Et la recherche est assez rapide en raison de celui-ci en utilisant un service différent.

Tout d'abord, vous devez créer un FulltextCatalog, puis ajouter des tables et des colonnes à celui-ci ( https://docs.microsoft.com/en-us/sql/relational-database/ Recherche / Text-Text-Search? Vue = SQL-Server-Ver15 )

J'ai utilisé AventureWorks DB pour écrire une démonstration. Vous pouvez convertir ce code en fonction de votre table et de vos colonnes. Je viens d'ajouter 3 colonnes ici et vous pouvez ajouter toutes vos colonnes au texte intégral. xxx

 Entrez la description de l'image ici

Vous pouvez commander vos résultats en utilisant du poids ( SQL Server pondéré Texte intégral sur )


1 commentaires

Fulltext recherche une très bonne idée, mais vous devriez essayer cette requête dans la requête dynamique pour donner un résultat de sélection.