2011-11-27 3 views
0

Dans ma table SQL Image, quand j'effectuer une requête de rechercheSQL ne peut pas rechercher

SELECT * FROM Image WHERE platename LIKE 'WDD 666' 

il renvoie aucun résultat (en utilisant autre colonne de recherche alors pas de problème).

Toutes les données de colonne ont été insérées par code C#. (Si entrer les données de recherche manuelle fonctionne.) SQL
maintenant je soupçonne que les mots WDD 666 n'était pas l'alphabet anglais. Est-ce possible?

En C#, le numéro de plaque a été généré en utilisant tesseract wrapper string type.

Que dois-je faire pour rechercher le numéro de la plaque?

Merci d'avance et désolé pour mon mauvais anglais.

+0

Qu'est-ce que trim() et len ​​() de platename, c'est-à-dire SELECT '*' + plaqueName + '*', len (plateName) . Vous pouvez avoir des caractères non imprimables supplémentaires dans le champ ... – Sparky

+0

Il est possible que votre configuration de collation soit différente de celle utilisée par votre requête. Vérifiez cette question sur http://stackoverflow.com/questions/531453/sql-server-2008-difference-between-collation-types –

Répondre

2

Puisque votre cas correspond, je vais exclure la sensibilité à la casse.

Il peut être avant ou arrière espaces - Essayez ceci ..

SELECT * FROM Image WHERE platename LIKE '%WDD 666%'

+0

Merci cela fonctionne, btw tout à l'heure j'ai essayé SELECT * FROM Image où le nom de plat comme LIKE 'WDD % ' mais ne peut pas .. – KayX

+0

Votre colonne est VarChar - il n'y aura donc pas d'espaces de fin, mais il pourrait très bien y avoir des espaces vides. Essayez avec un signe '%' principal. –

1

Essayez d'exécuter cette commande:

SELECT '*'+plateName+'*',len(plateName) 
FROM image. 

Je soupçonne que platename a des caractères non-imprimables dans le domaine .

Il semble être un CR/LF à la fin des données. Vous pouvez utiliser

UPDATE image SET plateName = replace(plateName,char(13)+char(10),'') 
WHERE plateName like '%'+char(13)+char(10)+'%' 

Si vous obtenez un compte positif de la ligne, vous savez qu'il y avait des données CR/LF et il a été retiré. Si vous exécutez la sélection après, vos longueurs doivent être 7 et 8 en fonction de vos données d'échantillon

+0

Afficher * WDD 666 * 9 * WLA 7564 * 10 – KayX

+0

Cela signifie que vous avez des caractères supplémentaires et non imprimables sur le terrain. Alors que la réponse générique ci-dessus fonctionnera pour obtenir les enregistrements, assurez-vous que le code qui utilise les données récupérées traite correctement les caractères non-imprimables ... – Sparky

+0

Comme Raj a fait remarquer, les données Varchar() empêcheront les données de fin (espaces), donc je pense que vous avez un retour chariot, linefeed à la fin des données. – Sparky

Questions connexes