0

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

下面的示例表;

Var1____________ Var2______________Var3_________ Var4 34______________测试_______________1234D12345678 45______________Something________不确定_______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 行是否以“非”开头</p>

if Var3 like "not*"

* 表示通配符

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

非常感谢您的帮助

4

1 回答 1

0

让我尝试解决每个问题:

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

+

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

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

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 中,通配符单字符运算符'_' 会像 vba 一样工作。

select column1 from your table where column1 like '____D________'

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

在 SQL 中,最常见的通配符运算符是 '%'。

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

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

于 2015-08-06T00:40:17.440 回答