7
votes

SQL Server Search à Nvarchars & Ntext

J'utilise SQL Server 2008 comme mon moteur de base de données dans une application Web ASP.NET C # ASP.NET C #. Mon projet est farsi (persan) alors j'ai utilisé nvarchar code> et ntext code> comme types de données.

J'utilise la requête suivante pour trouver des lignes de ma base de données, mais rien n'est retourné, alors que j'ai une ligne avec le mot clé spécifié. Bien sûr, mon mot-clé est en persan (Unicode). P>

Qu'est-ce qui ne va pas ici? Est-ce parce que l'utilisation de la langue faritique? Comment puis-je rechercher dans nvarchar code> et NText code> colonnes contenant des caractères Unicode? P>

myCommand = new SqlCommand("select * from tblArticle where name LIKE '%" + txtSearch.Text + "%'", SQLConnection);


3 commentaires

NTEXT est obsolète - NE PAS Utilisez-le pour de nouveaux projets! Utilisez nvarchar (max) à la place - cela facilite la recherche de beaucoup plus facile!


Aussi: Vous devez utiliser Queries paramétrisées au lieu de concaténer votre commande SQL! Cette approche est très vulnérable aux attaques d'injection SQL - ne l'utilisez pas.


Merci Marc, mais cette recherche est en cours dans un domaine Nvarchars, et je n'ai aucun résultat! Bien que je puisse facilement voir cette valeur exacte dans ma base de données, qu'est-ce qui se passe ici?


3 Réponses :


0
votes

Je ne suis pas familier avec c # asp.net , mais en utilisant nvarchar ou ntext ne doit pas faire toute différence dans le type de requête. Je suis errant que vous n'abandonnez que votre commande de requête à une variable et ne l'exécutant pas .. Si vous faites quelque chose comme myCommand.execute () ?


0 commentaires

19
votes

Vous devez utiliser le préfixe n ' pour indiquer que vous recherchez une chaîne unicode: xxx

sinon, vous convertissez votre chaîne de recherche à la non-unicode puis à la recherche de ....


1 commentaires

Merci Marc, cela a résolu mon problème! Vous m'avez aidé plusieurs fois. Merci encore



3
votes

Vous devez utiliser associer latin1_general_bin2 code> pour obtenir des résultats. Fonctionne pour amharique pour les Ethiopiens.

Select * From YourTableName where ColNameYouSearch LIKE N'%YourSerchCriteria%' COLLATE Latin1_General_BIN2"


0 commentaires