J'ai une base de données avec une table contenant des identificateurs C1, C2, C3..etc ..
au lieu d'écrire une requête qui a un tas de ou code> s, comment peut-il Je modifie la requête ci-dessous avec quelque chose qui attrapera tous les enregistrements qui commencent par une certaine lettre? p>
6 Réponses :
Avez-vous essayé d'utiliser cela retournerait des enregistrements dans lesquels comme code>? A titre d'exemple:
patients.lastname code> commence par "M". Le caractère «%» peut être «*» pour l'accès, je ne me souviens pas. Dans certaines bases de données, vous pouvez également utiliser «_» qui correspondra à un seul caractère (ou à plusieurs souligneurs que vous ajoutez). P> P>
J'ai essayé d'utiliser la carte sauvage% mais je l'ai fait de mal à l'origine, alors je suis venu à une aide.
Les caractères génériques d'accès traditionnel (jet / ACE) sont * et?, En utilisant le "mode ANSI 89 SQL par défaut (qui est propriétaire d'accès). % et _ sont ANSI 92 SQL, et vous pouvez exécuter l'accès au mode ANSI 92 SQL, mais je ne le recommanderais pas (il enfreint de nombreuses choses dans une application intégrée en mode ANSI 89). Sinon, si vous souhaitez utiliser les caractères génériques ANSI 92, vous pouvez utiliser l'opérateur de manière exclusif ou exécuter votre SQL avec OLEDB / ADO, qui utilise le mode ANSI 92 par défaut (DAO Utilisez ANSI 89).
SELECT Person.spineinjuryAdmit, tblComorbidity.comorbidityexplanation, Count(tblComorbidity.comorbidityexplanation) AS CountOfcomorbidityexplanation FROM tblKentuckyCounties INNER JOIN (tblComorbidity INNER JOIN (Person INNER JOIN tblComorbidityPerson ON Person.PersonID = tblComorbidityPerson.personID) ON tblComorbidity.ID = tblComorbidityPerson.comorbidityFK) ON tblKentuckyCounties.ID = Person.County GROUP BY Person.spineinjuryAdmit, tblComorbidity.comorbidityexplanation HAVING (Person.spineinjuryAdmit LIKE "c*");
acceptera dès que je suis autorisé. Je pensais demander que cela serait plus rapide que Googling. Merci :)
Vous pouvez modifier cela pour inclure la liste de filtres dans le où la clause CODE>. Ce qui suit trouvera des patients dont le nom de famille commence par
Smith code>. (c.-à-d.
smith code> et
smithson code>, etc.), et ceux dont
admet code> commencent par
C code>.
....
WHERE spineinjuryAdmit LIKE 'c*'
AND Patient.FirstName LIKE 'Smith*'
GROUP BY Person.spineinjuryAdmit,
tblComorbidity.comorbidityexplanation;
Vous avez deux options:
Utilisez le Comme opérateur p> li>
Utilisez le Dans opérateur p> li> ol>
par exemple: p> voir http://office.microsoft.com/en-us/access-help/Like-Perator-HP001032253.cox Pour plus de détails sur comme. P> AVERTISSEMENT FAIR: Les caractères génériques de comme dans l'accès sont * code> et
? code> au lieu de
%% code> _ code> _ code > (comme c'est le cas pour la plupart des autres versions de SQL). P> P>
Vous pouvez utiliser une clause où vous pouvez exclure les lignes que vous ne voulez pas avant de faire le groupe.
WHERE p.spineinjuryAdmit Like "c%"
Vous pouvez utiliser Regex pour interroger toutes les lignes commençant par plusieurs caractères.
SELECT * FROM table WHERE column REGEXP '^[ c1, c2, c3]';
Je ne sais pas si vous préférez le faire de cette façon, mais j'aime construire mes instructions de jointure comme ceci:
de tblkentuckycountties k code>
rejoindre la personne P sur p.county = k.id Code>
Rejoignez TblComorBidectorPerson CP sur cp.Personid = p.personid code>
joindre TblComorbidity c sur c.id = cp.comorbidectorfk code>