MS ACCESS 2007是否有LTRIM功能?

时间:2019-01-01 08:46:09

标签: sql ms-access trim

我正在尝试从Access 2007的列中获取3或4个零,但在数据类型为text(来自csv数据)的情况下,没有得到任何结果。

4 个答案:

答案 0 :(得分:0)

据我了解,MS Access实际上应该支持LTRIM。以下是您需要时的解决方法:

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

答案 1 :(得分:0)

这里有几个快速编写的LTrimRTrim函数,用于处理空格以外的字符:

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

答案 2 :(得分:0)

仅在数字的情况下,您可以使用 Val 去除前导零:

LTrimmedValue = CStr(Val(Value))
' "000123456789000" -> "123456789000"

答案 3 :(得分:0)

MS Access支持ltrim(),但仅适用于空格。因此,假设您的字符串没有空格,则可以使用replace()ltrim()

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

如果您确实有空格,那么通常会有一个您没有的字符,因此您可以先替换空格:

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