如何让mysql表达式返回整数值?

时间:2017-09-16 12:36:58

标签: mysql node.js

我在mysql中有两个表,如下所示:

Table1持有问题

qid  tid  qtype 
101    1    1
102    1    2
103    1    3
104    1    4

此处qtype是问题类型,其中qtype 1和2接受数字值,3和4接受字符串。我已将qtype声明为varchar列。

表2包含答案

sid qid  qtype qanswer
1    101    1     10
1    102    2     20
1    103    3     o1
1    104    4     o2

每个问题都有一行代表#sid'

我使用以下查询以下面的方式选择了数据:

select a.sid, MAX(CASE WHEN (a.qid = 101) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '101' ,
MAX(CASE WHEN (a.qid = 102) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '102' ,
MAX(CASE WHEN (a.qid = 103) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '103' ,
MAX(CASE WHEN (a.qid = 104) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '104' from Table2 a join Table1 b on a.qtype = b.qtpe where b.tid = 1

sid 101 102 103 104
1    10  20  o1  o2
2    30  15  o2  o1

我想选择qtype 1和2作为整数,所以我在查询中使用了以下语句:

if(qtype in (1,2),cast(qanswer as unsigned),qanswer)

根据需要,我没有得到qtype 1和2的答案。 我参考了这个question

我也试过convert而不是演员,但结果相同。 如何将qtype 1和2转换为整数?

如何从mysql表达式返回整数值。

1 个答案:

答案 0 :(得分:0)

这不是语句

if(qtype in (1, 2), cast(qanswer as unsigned), qanswer)

这是表达式。表达式返回单个类型的标量值。 MySQL需要确定返回的类型是unsigned还是varchar,因为它必须为整个表达式选择一个。

MySQL似乎是选择字符串类型。