VBScript 中的 IN 语句

问题描述 投票:0回答:2

是否有相当于 VBScript 的

IN
语句?

我希望为列可见性创建一个

If
语句,该语句检查是否在参数中选择了特定值。该值是多值的,因此我需要测试它是否存在于值列表中。

我有一个查找表,它为 4 种不同的调用类型分配一个值:

SELECT 1 as CALL_ORDER,'Welcome Call' AS [TEXT], '1' AS [VALUE]
UNION
SELECT 2 as CALL_ORDER,'Month One Call' AS [TEXT], '2' AS [VALUE]
UNION
SELECT 3 as CALL_ORDER,'Month Two Call' AS [TEXT], '3' AS [VALUE]
UNION
SELECT 4 as CALL_ORDER,'Month Six Call' AS [TEXT], '4' AS [VALUE] 

视觉工作室:

用户可以选择多个这些选项,我需要测试运行时列表中是否存在特定值。

例如:

If 1 IN(PARAMETERS!CALL_TYPE.VALUE) Then ...

不确定如何在 VBScript 中执行此操作。

sql sql-server visual-studio vbscript
2个回答
1
投票

VBScript 没有

In
Contains
语句/运算符。

我认为在 VBScript 中进行

In
Contains
检查的最常见方法是使用可能的值构建一个 dictionary 并根据该字典检查实际值:

Set ref = CreateObject("Scripting.Dictionary")
ref.Add "foo", True
ref.Add "bar", True

var = "foo"
If ref.Exists(var) Then    'value exists
    '...
End If

var = "baz"
If ref.Exists(var) Then    'value doesn't exist
    '...
Else
    '...
End If

另一种常见方法是使用 2 的倍数作为整数值中的标志:

Const FOO = 1
Const BAR = 2
Const BAZ = 4

var = 5
If (var And FOO) = FOO Then    'value exists
    '...
End If

If (var And BAR) = BAR Then    'value doesn't exist
    '...
Else
    '...
End If

根据您的实际需求,您也可以使用

Select Case
声明:

Select Case var
    Case "foo": 'do some
    Case "bar": 'do other
    Case Else:  'everything else
End Select

0
投票

我会简单地使用 InStr 函数。例如。我想解决这样的问题: a = 2 ....其中 a 在 (12,23,45)

然后我会用 a = Cstr(2) ...如果 Instr("12,23,45",a)>0 那么...

© www.soinside.com 2019 - 2024. All rights reserved.