2010-08-12 3 views
0

Je suis en train de faire un projet dans ASP.NET qui, à un moment recherche dans une base de données SQL pour un code postal en utilisant: datasetsRecherche ASP.NET DataSet SQL Postcode

string postcode = "%" + searchTerm.Trim().Replace(' ', '%') + "%"; 
SearchDataSet.SearchCustomerTableDataTable custTable = custAdapter.GetDataCustPostcode(postcode); 

Les GetDataCustPostcode runs:

SELECT * FROM CustomerTable WHERE (CustomerPostcode LIKE @CustPostcode) 

Les résultats attendus sont retournés lorsque je tente:

searchTerm = "BT14" recherches pour une postcode de% BT14%

ou searchTerm = "BT14 7" recherche un postcode de% BT14% 7%

custTable est vide lorsque je tente:

searchTerm = "BT14 7D" recherches pour une postcode de% BT14% 7D%

Si je tente d'écrire un requête SQL directement, par exemple en tapant:

SELECT * FROM CustomerTable WHERE (CustomerPostcode LIKE '%BT14%7D%') 

Ensuite, les résultats attendus sont retournés.

Quelqu'un peut-il nous expliquer pourquoi? Est-ce quelque chose à voir avec les personnages de la chaîne?

Merci

Clivest

+0

C'est étrange! Quand je l'ai essayé ce matin, ça a marché. Je n'ai pas modifié le code du tout. Peut-être qu'un redémarrage a aidé? Quoi qu'il en soit, tout fonctionne correctement maintenant. Merci – Clivest

Répondre

1

Pensez à utiliser le caractère générique d'un seul caractère, le trait de soulignement, pour la correspondance mi-chaîne, et uniquement sur les Percents extrémités de la chaîne.

+0

Merci pour la réponse. J'ai pensé que je devais utiliser un pourcentage au milieu parce que le code postal pourrait être 'BT147DT' ou' BT14 7DT'. Est-ce correct? Ou est-il un autre caractère générique qui serait plus approprié – Clivest

+0

Malheureusement, non. Je suis heureux, selon votre commentaire, que les choses fonctionnent pour vous. Si vous souhaitez en savoir plus sur les différents caractères génériques pris en charge, consultez cette page: http://manuals.sybase.com/onlinebooks/group-asarc/srg1100e/sqlref/@Generic__BookTextView/73386;pt=73946 – kbrimington

0

% 7D est un caractère spécial dans certaines circonstances ... peut-être aussi celui-ci? Est-ce que le problème se produit également pour d'autres combinaisons?

+0

Merci pour la réponse . Il le fait aussi pour 'BT14 7E', mais pas' BT14 9E' – Clivest