Existe-t-il un équivalent à la fonction de sous-chaîne dans MS Access SQL?

Je veux faire quelque chose comme ça dans une requête MS Access, mais la sous-chaîne est une fonction indéfinie.

SELECT DISTINCT SUBSTRING(LastName, 1, 1)
FROM Authors;
22
demandé sur cgp 2009-05-01 01:14:15

4 réponses

Vous pouvez utiliser les fonctions de chaîne VBA (comme le souligne @onedaywhen dans les commentaires, Ce ne sont pas vraiment les fonctions VBA, mais leurs équivalents des bibliothèques MS Jet. En ce qui concerne les signatures de fonction, elles sont appelées et fonctionnent de la même manière, même si la présence DE MS Access n'est pas requise pour qu'elles soient disponibles.):

SELECT DISTINCT Left(LastName, 1)
FROM Authors;

SELECT DISTINCT Mid(LastName, 1, 1)
FROM Authors;
28
répondu Tomalak 2009-05-01 16:37:46

Je pense QU'il y a MID () et peut-être LEFT() et RIGHT() dans Access.

6
répondu JP Alioto 2015-06-09 23:19:18

J'ai beaucoup travaillé avec msaccess vba. Je pense que vous cherchez une fonction MOYENNE

Exemple

    dim myReturn as string
    myreturn = mid("bonjour tout le monde",9,4)

Vous rendra la valeur "tout"

3
répondu webzy 2014-08-31 14:08:35

Je n'ai pas pu trouver un module standard qui a ajouté cette fonction, alors j'en ai écrit un:

Dans Access, accédez au ruban Outils de base de données, dans la zone Macro, cliquez sur Visual Basic. Dans la zone de projet en haut à gauche, cliquez avec le bouton droit sur le nom de votre fichier et sélectionnez Insérer - > Module. Dans le module, collez ceci:

Public Function Substring_Index(strWord As String, strDelim As String, intCount As Integer) As String

Substring_Index = delims

start = 0
test = ""

For i = 1 To intCount
    oldstart = start + 1
    start = InStr(oldstart, strWord, strDelim)
    Substring_Index = Mid(strWord, oldstart, start - oldstart)
Next i

End Function

Enregistrez le module en tant que module1 (par défaut). Vous pouvez maintenant utiliser des instructions comme:

SELECT Substring_Index([fieldname],",",2) FROM table
2
répondu Sverre 2012-10-29 05:53:57