我不知道这在MS Access中是否可行,但我想要做的是检测破折号(-),并在SQL语句和或逗号之间使用。
例如。我有一个名为"Books“的表,其中包含字段: BookID、Title、Subject。
现在,如何查询允许用户在文本框中输入值的Books表,如下所示:
1 or 1-5 or 1,3,4.
如果该值为1,则sql语句应为:
SELECT * FROM Books WHERE BookID = 1
如果值为1-5,则sql语句应为:
SELECT * FROM Books WHERE BookID BETWEEN 1 And 5
如果值为1,3,4,则sql语句应为:
SELECT * FROM Books WHERE BookID IN (1,3,4)
发布于 2012-06-21 21:59:36
从我已有的东西上剪下来;
s = "SELECT * FROM Books WHERE BookID" & parseSarg("11,22,33")
使用;
Public Function parseSarg(str As String) As String
Dim re As Object: Set re = CreateObject("vbscript.regexp")
re.Global = True
Select Case True
'//is number
Case reTest(re, "^\d+$", str): parseSarg = " = " & str
'//is number-number
Case reTest(re, "^\d+-\d+$", str): parseSarg = " BETWEEN " & Replace$(str, "-", " AND ")
'//is number,number[,number]
Case reTest(re, "^\d+(?:,\d+)*$", str): parseSarg = " IN (" & str & ")"
'//is >number
Case reTest(re, "^>\s*\d+$", str): parseSarg = " >" & Mid$(str, 2)
Case Else
parseSarg = " = 0 AND 1=0"
End Select
End Function
Function reTest(re As Object, pattern As String, value As String) As Boolean
re.pattern = pattern
reTest = re.Test(value)
End Function
发布于 2012-06-21 21:56:34
SELECT Books.Title FROM Books WHERE Books.BookID > 1 AND Books.BookID < 5;
https://stackoverflow.com/questions/11139195
复制相似问题