我在.NET应用程序中使用SQLite
,并且有以下查询:
select (CASE IFNULL(CCODE_1, '') when 'STD' then '_' else '' end) +
(CASE IFNULL(CFRRR_CS, '') when '1' then 'F_' when '2' then 'R_' when '3' then 'FR_' else '' end) +
IFNULL(CCODE_1, '') +
(CASE when (IFNULL(CCODE_2, '') = '') then '' else '_' end) +
IFNULL(CCODE_2, '') +
(CASE when (IFNULL(CCODE_3, '') = '') then '' else '_' end) +
IFNULL(CCODE_3, '') as OptionID
from X20_TIRES
上面的查询产生一个全为0的OptionID
列。没什么。
这是X20_TIRES的一些示例数据:
我期望得到如下结果:
R_F41A
R_F41V
etc...
我很清楚case/when/then
崩溃了,只是吐出0,但是我不明白为什么。我究竟做错了什么?预先感谢您的任何建议。
答案 0 :(得分:1)
如果要将CASE语句中的所有这些结果连接起来,
您必须使用int main()
{
int counter = 0;
int flightTimeNum = 0;
char userInput[81] ="";
char userInputNew[81] = "";
char cityNew[20] = "";
char flightTime[20] = "";
char layOverTime[20] = "";
fgets(userInput, 81, stdin);
char *city;
char *flight;
char *layover;
city = strchr(userInput, ',');
strncpy(cityNew, userInput, city - userInput);
printf("%s\n" ,cityNew);
layover = strrchr(userInput, ',');
strncpy(layOverTime, userInput, layover - userInput);
printf("%s\n", layOverTime);
printf("Press ENTER key to Continue\n");
getchar();
}
运算符而不是||
:
+