web-dev-qa-db-fra.com

Existe-t-il un équivalent à la fonction SUBSTRING dans MS Access SQL?

Je veux faire quelque chose comme ça dans une requête MS Access, mais SUBSTRING est une fonction non définie.

SELECT DISTINCT SUBSTRING(LastName, 1, 1)
FROM Authors;
24
CoderDennis

Vous pouvez utiliser les fonctions de chaîne VBA (comme @onedaywhen le fait remarquer 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 bien que la réelle présence de MS Access ne soit pas nécessaire pour qu'ils soient disponibles.):

SELECT DISTINCT Left(LastName, 1)
FROM Authors;

SELECT DISTINCT Mid(LastName, 1, 1)
FROM Authors;
31
Tomalak

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

6
JP Alioto

J'ai beaucoup travaillé avec ms access vba. Je pense que vous recherchez la fonction MID

exemple

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

vous rendra la valeur "tout"

3
webzy

Je n'ai pas trouvé de 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 désormais utiliser des instructions telles que:

SELECT Substring_Index([fieldname],",",2) FROM table
2
Sverre