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;
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;
Je pense QU'il y a MID () et peut-être LEFT() et RIGHT() dans Access.
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"
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