我想在MS Access查询中这样做,但SUBSTRING是一个未定义的函数。是否有与MS Access SQL中的SUBSTRING函数相当的功能?
SELECT DISTINCT SUBSTRING(LastName, 1, 1)
FROM Authors;
我想在MS Access查询中这样做,但SUBSTRING是一个未定义的函数。是否有与MS Access SQL中的SUBSTRING函数相当的功能?
SELECT DISTINCT SUBSTRING(LastName, 1, 1)
FROM Authors;
您可以使用VBA字符串函数(如@onedaywhen在评论中指出,他们不是真正的VBA功能,但它们的等价物从MS喷气机库。至于函数签名去,他们是叫和工作一样,即使MS访问的实际存在不要求他们为可供):
SELECT DISTINCT Left(LastName, 1)
FROM Authors;
SELECT DISTINCT Mid(LastName, 1, 1)
FROM Authors;
我认为这是MID(),也许LEFT()和RIGHT()在Access中。
我找不到任何添加了这个功能关闭的,现成的模块,所以我写了一个:
在Access,进入数据库工具丝带,在宏区域中单击到Visual Basic。在左上角的“项目”区域中,右键单击文件的名称,然后选择“插入” - >“模块”。在此模块中粘贴:
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
将模块另存为module1(默认值)。您现在可以使用类似的语句:
SELECT Substring_Index([fieldname],",",2) FROM table
我已经与msaccess vba很多。 我认为你正在寻找的MID功能
例如
dim myReturn as string
myreturn = mid("bonjour tout le monde",9,4)
会给你回值“吹捧”
挑剔点:所涉及的DLL文件(我相信)expsrv.dll的和vbajet32。这些MS文档统称为Jet Expression Services。所以我认为我们可以将它们视为本地ACE/Jet表达式,而不是上下文中的“VBA函数”。注意一些表达式在ACE/Jet中的工作方式与其等效的VBA函数IIF():VBA总是评估真假条款,而ACE/Jet则不会。 – onedaywhen 2009-05-01 07:23:01
@onedaywhen:谢谢澄清。我对编写“VBA函数”犹豫不决,但我不知道该写什么。在提到的字符串函数的情况下,它们显然是等价的。 OTOH - 我想你甚至可以在Access查询中使用用户定义的VBA函数,但这可能是Access特定的。 – Tomalak 2009-05-01 15:05:26
我想这就是为什么Nz()在本地Access中可用,但在您从Excel运行查询时不可用。 – Knox 2009-05-01 20:26:11