9
votes

Sélectionnez les enregistrements en fonction de ce que commence un champ?

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 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? xxx


1 commentaires

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 rejoindre la personne P sur p.county = k.id Rejoignez TblComorBidectorPerson CP sur cp.Personid = p.personid joindre TblComorbidity c sur c.id = cp.comorbidectorfk


6 Réponses :


21
votes

Avez-vous essayé d'utiliser comme ? A titre d'exemple: xxx

cela retournerait des enregistrements dans lesquels patients.lastname 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).


2 commentaires

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).



4
votes
    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*");

1 commentaires

acceptera dès que je suis autorisé. Je pensais demander que cela serait plus rapide que Googling. Merci :)



0
votes

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;


0 commentaires

1
votes

Vous avez deux options:

  1. Utilisez le Comme opérateur

  2. Utilisez le Dans opérateur

    par exemple: xxx

    voir http://office.microsoft.com/en-us/access-help/Like-Perator-HP001032253.cox Pour plus de détails sur comme.

    AVERTISSEMENT FAIR: Les caractères génériques de comme dans l'accès sont * et ? au lieu de %% _ _ (comme c'est le cas pour la plupart des autres versions de SQL).


0 commentaires

4
votes

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%"


0 commentaires

1
votes

Vous pouvez utiliser Regex pour interroger toutes les lignes commençant par plusieurs caractères.

SELECT * FROM table WHERE column REGEXP '^[ c1, c2, c3]';


0 commentaires