如何在SQL中创建类似DECODE函数的c++宏

How to create C++ Macro like DECODE function in SQL?

本文关键字:函数 DECODE c++ SQL 创建      更新时间:2023-10-16

目前在c++中,我必须编写这样的代码来转换值:

    if (a == 1) {
        b = "one";
    } else if (a == 2) {
        b = "two"
    } else if (a == 3) {
        b = "three"
    } else {
        b = "too_big"
    }

如何在SQL中创建一个宏解码,这样我就可以使用这样的代码:

b = DECODE(a, 1, "one", 2, "two", 3, "three", "too_big");

我对C有点生疏,可能会使用可变函数。但是使用宏…

首先是一个有效的表达式(我希望):

b = (char* s[] = {"one", "two", "three", "too_big"}, 
     int n = sizeof(s) / sizeof(char*),
     s[(a >= n ? n : a) - 1]);

那又会怎样呢:

b = DECODE(a, { "one", "two", "three", "too_big" });

这是不完全相同的

宏:

#define DECODE(a, sss) (char* s[] = sss, 
            int n = sizeof(s) / sizeof(char*), s[(a >= n ? n : a) - 1])

变元函数更好。switch语句是我的自然选择。或:

 b = a == 1 ? "one"
   : a == 2 ? "two"
   : a == 3 ? "three"
   : "too_big";