2011-06-16 2 views
0

Dans ma base de données un champ « Lieu préféré » sera là, qui contient le nom de la ville comme « Ahmadabad, Anand, Baroda »Comment faire la requête dans SQL Server qui comparent les données dans la base de données

Dans la section de l'employeur , lorsque l'employeur est entré dans le lieu "Anand" alors le dossier ci-dessus sera sélectionné.
Comment puis-je faire la requête qui recherche la toute la ville avec la ville Ahmadabad et quand la recherche alors ce recorde sera affiché

Répondre

0

Le plus facile à utiliser « LIKE »

Par exemple:

select * 
from MyTable 
where Location like '%Ahmadabad%' 

Cependant, cela trouvera également des villes comme 'NewAhmadabad'. Je ne sais pas si vous pouvez négliger.

Vous pouvez faire quelque chose comme ça, si vous ne pouvez pas négliger:

select * 
from MyTable 
where 
    Location like '%,Ahmadabad,%' or 
    Location like 'Ahmadabad,%' or 
    Location like '%,Ahmadabad' 
+0

Si je ne me trompe pas, dois-je utiliser au lieu de charIndex% ...% ? – Pankaj

1

La bonne réponse est que vous devez normaliser votre schéma SQL un peu. Vous avez besoin de trois tables distinctes: client, emplacements et customer_locations. La table des localisations a UN enregistrement par ville avec au moins deux colonnes: city_id et name. La table customer_locations a exactement deux colonnes: customer_id et city_id. Ceci est connu comme une table de "recherche" et vous permet de définir des relations "plusieurs-à-plusieurs".

Maintenant, votre requête sera un peu plus complexe car vous devrez utiliser "rejoindre". Mais avec la complexité vient la flexibilité - vos recherches seront exactes et vous éviterez des problèmes tels que des enregistrements avec des noms de villes accidentellement mal orthographiés (qui ne correspondraient finalement pas).

Je suis sûr que vous aurez à faire un peu plus de recherche, mais votre requête ressemble à quelque chose comme:

select cust.*, city.* from customers cust inner join customer_locations cl on 
cust.customer_id = cl.customer_id inner join locations city on cl.city_id = city.city_id 
where city.name = 'Anand'; 
Questions connexes