Есть ли функция LTRIM для MS ACCESS 2007? - PullRequest
0 голосов
/ 01 января 2019

Я пытаюсь получить три или четыре ноля из столбца в Access 2007, но не получаю никакого результата, если тип данных - текст (из данных CSV).

Ответы [ 4 ]

0 голосов
/ 01 января 2019

MS Access поддерживает ltrim(), но только для пробелов.Итак, предполагая, что в вашей строке нет пробелов, вы можете использовать replace() и ltrim():

select replace(ltrim(replace(col, '0', ' ')), ' ', '0')

Если у вас есть пробелы, часто есть символ, которого у вас нет, поэтому вы можетесначала замените пробелы:

select replace(replace(ltrim(replace(replace(col, ' ', '~'
                                            ), '0', ' '
                                    )
                            ), ' ', '0'
                      ), '~', ' '
              )
0 голосов
/ 01 января 2019

Вот пара быстро написанных LTrim & RTrim функций для работы с символами, отличными от пробелов:

Function LTrimChr(strStr As String, strChr As String) As String
    If strStr Like strChr & "*" Then
        LTrimChr = LTrimChr(Mid(strStr, 2), strChr)
    Else
        LTrimChr = strStr
    End If
End Function
Function RTrimChr(strStr As String, strChr As String) As String
    If strStr Like "*" & strChr Then
        RTrimChr = RTrimChr(Left(strStr, Len(strStr) - 1), strChr)
    Else
        RTrimChr = strStr
    End If
End Function

Ожидает, что strChr будет одним символом, например:

?LTrimChr("000123456789000","0")
123456789000
?RTrimChr("000123456789000","0")
000123456789
0 голосов
/ 01 января 2019

Только в случае цифр вы можете использовать Val для удаления начальных нулей:

LTrimmedValue = CStr(Val(Value))
' "000123456789000" -> "123456789000"
0 голосов
/ 01 января 2019

Из того, что я прочитал, MS Access фактически должен поддерживать LTRIM.Вот обходной путь, если вам это нужно:

SELECT
    IIF(string LIKE "0000*",
        MID(string, 5),
        IIF(string LIKE "000*", MID(string, 4), string)) output
FROM yourTable;
...