【问题标题】:How to make mysql expression to return integer value?如何使mysql表达式返回整数值?
【发布时间】:2018-02-25 11:55:06
【问题描述】:

我在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 列。

Table2 包含答案

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 表达式返回整数值。

【问题讨论】:

    标签: mysql node.js


    【解决方案1】:

    这不是一个声明

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

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

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

    【讨论】:

    • 我如何让mysql选择整数值而不是字符串值。
    • @AMAhajan 。 . .那将是与您提出的问题不同的问题。您应该以 question 而不是 comment 的形式提出新问题。提供样本数据和期望的结果。
    猜你喜欢
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2014-11-27
    • 2020-02-13
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多