Transact-SQL: Comment puis-je marquer une chaîne de caractères?
Je veux être en mesure de marquer une entrée de chaîne à partir d'une zone de texte pour faire ma requête.
Exemple: l'utilisateur entre "abc xyz 123" dans la zone de texte.
Je veux faire ceci:
SELECT * FROM database WHERE Name contains "abc" AND "xyz" AND "123"
-- as opposed to containing "abc xyz 123"
-- please ignore my sql syntax, I am an absolute beginner
Grâce.
OriginalL'auteur user776676 | 2011-06-02
Vous devez vous connecter pour publier un commentaire.
À l'aide d'une chaîne de fonction de répartition (par exemple, comme cette une), vous pourriez avoir quelque chose comme ceci:
OriginalL'auteur Andriy M
Une solution possible est que vous prenez la corde et de le diviser en vos jetons et pour chaque jeton de l'insérer dans une table temporaire, et ensuite vous rejoindre la table temporaire pour votre recherche table et dans la jointure faire un like '%' + tokenColumn + '%' pour obtenir toutes vos lignes qui contiennent une valeur de vos jetons
Voici un exemple de découpage de la chaîne: http://blogs.microsoft.co.il/blogs/itai/archive/2009/02/01/t-sql-split-function.aspx
OriginalL'auteur Avitus
Vous pouvez utiliser le SQL dynamique pour atteindre cet:
[Modifier] En réponse à Avitus commentaire:
Pas la plus parfaite solution. Cependant, Si quelqu'un pénètre dans 'drop table Test1', la requête sera
SELECT * FROM Test1 WHERE Name like '%drop%' or Name like '%table%' or Name like '%Test1%'
OriginalL'auteur Alex Aza
J'ai la même question. J'ai eu de 1 200 lignes de chaînes, séparés par un caractère espace. Ma réponse est d'utiliser une feuille de calcul comme Open Office Calc. Alors si vous avez besoin de les mettre en db, vous pouvez générer insérer des scripts via la formule. Ce ne sera pas utiliser SQL, mais il est susceptible de résoudre votre problème comme le mien.
OriginalL'auteur thirdy