【问题标题】:If else with multiple variables and criteriaIf else 有多个变量和标准
【发布时间】:2015-08-06 00:00:52
【问题描述】:

我对具有 excel VBA 背景的 SQL 非常陌生,我正在尝试将大型 excel vba 脚本转换为 SQL,这给我带来了一些麻烦,主要是 if else 语句。

下面的示例表;

Var1____________ Var2______________Var3_________ Var4 34______________测试_________________________1234D12345678 45______________某事________不确定_______G098751425 45______________FDS_____________不确定_______参考值 59______________另一个______________ 09871345______1459864658787

我的查询的第一部分如下; 如果我想根据其他变量创建变量值,if-else 语句是最好的方法吗?

if Var1 = '34' and Var2 = 'Testing' set NewVar = Label1
else if Var1 = '45' and Var2 = 'Testing' and Var3 = 'not sure' set NewVar = Label2
else if Var1 = '45' and Var2 = 'FDS' and Var4 = ' Reference Value ' set NewVar = Label3

第二部分; 我已经搜索了执行具有多个条件的 if else 语句的最佳方法是否足够好?

if Var1 = '34' and Var2 = 'Testing' set NewVar = Label1

第三部分是; 什么是类似 vba 语句的 SQL 等价物? 例如 第一行,测试 Var4 是否有四个数字,后跟“D”,然后是 8 个数字。 vba 是这样的

if Var4 like "####D########"

其中哈希表示一个数字 或测试第 3 行是否以“非”开头

if Var3 like "not*"

* 表示通配符

我有 350 个变量组合导致不同的 NewVar 值,这将运行数亿行数据,因此它需要高效。 这是正确的方法还是我陷入了 vba 的思维定势并且需要一种完全不同的 SQL 方法?

非常感谢您的帮助

【问题讨论】:

    标签: excel vba if-statement sql-like vb-like-operator


    【解决方案1】:

    让我尝试解决每个问题:

    我的查询的第一部分如下;如果我想做一个 基于其他变量的变量值是if-else语句 最好的方法?

    +

    第二部分;我已经搜索了执行 if else 语句的最佳方法 有多个标准 是否足够好?

    我建议您使用SQL case-when syntax,让数据库为您完成工作,例如:

    select case 
                when var1 = '34' and var2 = 'Testing' then 'Label1'
                when var1 = '34' and var2 = 'Testing' then 'Label1'
    end as newVal from YourTable
    

    第三部分是;什么是类似 vba 语句的 SQL 等价物?例如 第一行,测试 Var4 是否有四个数字,后跟“D”,然后 后跟 8 个数字。

    在 SQL 中,wild card single char operator '_' 会像 vba 一样工作。

    select column1 from your table where column1 like '____D________'
    

    其中哈希表示一个数字或测试第 3 行是否以“非”开头

    在 SQL 中,最常见的 wild card operator 是 '%'。

    select column1 from your table where column1 like 'not%'
    

    此外,请访问w3schools website,您将了解更多关于 SQL 语法的知识。

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2012-10-23
      • 2011-03-15
      • 2014-03-05
      • 1970-01-01
      相关资源
      最近更新 更多