然后在SQLite中解析为零的情况

时间:2019-03-29 22:54:21

标签: sqlite

我在.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的一些示例数据:

enter image description here

我期望得到如下结果:

R_F41A
R_F41V
etc...

我很清楚case/when/then崩溃了,只是吐出0,但是我不明白为什么。我究竟做错了什么?预先感谢您的任何建议。

1 个答案:

答案 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(); } 运算符而不是||

+