SQL Server recherche dans nvarchar & ntext
Je suis à l'aide de SQL Server 2008 comme mon moteur de base de données dans un VS2010, C# ASP.NET web app. Mon projet est le Farsi (persan), j'ai donc utilisé nvarchar
et ntext
comme mon des types de données.
Je utiliser la requête suivante pour trouver les lignes de ma base de données mais rien n'est renvoyé, alors que j'ai une ligne avec le mot clé spécifié. Bien sûr, mon mot est persan (unicode).
Ce qui ne va pas ici? Est-ce à cause de l'utilisation de la langue Farsi? Comment puis-je rechercher dans nvarchar
et ntext
colonnes contenant des caractères unicode?
myCommand = new SqlCommand("select * from tblArticle where name LIKE '%" + txtSearch.Text + "%'", SQLConnection);
NTEXT
est obsolète - ne pas l'utiliser pour de nouveaux projets! Utilisation NVARCHAR(MAX)
au lieu - qui rend la recherche beaucoup plus facile, trop!Aussi: vous devez utiliser les requêtes paramétrées au lieu de concaténer ensemble de votre commande SQL! Cette approche est très vulnérable à la les attaques par injection SQL - ne l'utilisez pas.
merci marc, mais cette recherche est fait dans un champ de type nvarchar, et je n'obtiens aucun résultat! alors que je peux facilement voir que la valeur exacte dans ma base de données, ce qui se passe ici?
OriginalL'auteur Ali_dotNet | 2012-06-29
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser le
N'
préfixe pour indiquer que vous êtes à la recherche d'une chaîne Unicode:Sinon, vous êtes la conversion de votre recherche de chaîne de caractères non-Unicode et de la recherche....
OriginalL'auteur marc_s
Vous devez utiliser
COLLATE Latin1_General_BIN2
pour obtenir des résultats. Travaille pour l'Amharique pour les Éthiopiens.OriginalL'auteur Reagan
Je ne suis pas familier avec
C#
ASP.NET
, mais à l'aide denvarchar
ountext
ne devrait pas faire de différence dans le type de requête. Je suis errant vous êtes seulement d'assigner votre commande de requête dans une variable et non pas de l'exécuter..si vous faites quelque chose comme
myCommand.execute()
?avez-vous essayé la requête dans l'éditeur de requête sql server?
OriginalL'auteur mithilatw