我很擅长在excel VBA中有背景的SQL,我正在尝试将一个大的excel vba脚本转换为SQL,这给我带来了一些麻烦,主要是if else语句。
下面的示例表;
Var1 ____________ Var2______________Var3 _________ Var4 34______________Testing_________________________1234D12345678 45______________Something________不确定________ G098751425 45______________FDS_____________不确定______参考价值 59______________Another__________ 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行是否以'not'开头
if Var3 like "not*"
*表示通配符
我有350个变量组合导致不同的NewVar值,这将运行数亿行数据,因此需要高效。 这是正确的方法,还是我陷入了vba思维模式,需要一种完全不同的SQL方法?
非常感谢您的帮助
答案 0 :(得分:0)
让我试着解决每个问题:
我的查询的第一部分如下;如果我想做一个 基于其他变量的变量值是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语法的知识。