首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用破折号(-)作为条件的值

如何使用破折号(-)作为条件的值
EN

Stack Overflow用户
提问于 2012-06-21 21:24:38
回答 2查看 314关注 0票数 2

我不知道这在MS Access中是否可行,但我想要做的是检测破折号(-),并在SQL语句和或逗号之间使用。

例如。我有一个名为"Books“的表,其中包含字段: BookID、Title、Subject。

现在,如何查询允许用户在文本框中输入值的Books表,如下所示:

代码语言:javascript
运行
复制
1 or 1-5 or 1,3,4.

如果该值为1,则sql语句应为:

代码语言:javascript
运行
复制
SELECT * FROM Books WHERE BookID = 1

如果值为1-5,则sql语句应为:

代码语言:javascript
运行
复制
SELECT * FROM Books WHERE BookID BETWEEN 1 And 5

如果值为1,3,4,则sql语句应为:

代码语言:javascript
运行
复制
SELECT * FROM Books WHERE BookID IN (1,3,4)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-21 21:59:36

从我已有的东西上剪下来;

代码语言:javascript
运行
复制
s = "SELECT * FROM Books WHERE BookID" & parseSarg("11,22,33")

使用;

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2012-06-21 21:56:34

代码语言:javascript
运行
复制
SELECT Books.Title FROM Books WHERE Books.BookID > 1 AND Books.BookID < 5;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11139195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档