代码之家  ›  专栏  ›  技术社区  ›  alemjerus

如何将MySQL结果强制转换为字符串?

  •  1
  • alemjerus  · 技术社区  · 15 年前

    有一个查询:

    SELECT blalist FROM blatable WHERE blafield=714
    

    它返回一个看起来像“2,12,297145431719”的字符串。还有一个问题:

    SELECT userid, name, surname, creditcardnum, items
        FROM stolencards WHERE userid IN
        (SELECT blalist FROM blatable WHERE blafield=714)
    

    现在不行了。
    我只能通过单独执行这些查询来让它工作。我应该如何将其保存在单个查询中?

    3 回复  |  直到 15 年前
        1
  •  4
  •   Tatu Ulmanen    15 年前

    不应在一个单元格中存储多个值。每一个值 blatable 应该在自己的一排,然后你的 IN 从句很有魅力。看看数据库规范化,尤其是 First normal form 关于桌子的设计。

    因为在一个单元格中有所有值,所以 比较结果显示,所有用户ID都与字符串“2,12,297145431719”进行了比较,这显然是不匹配的。您的查询实际上如下所示:

    ...FROM stolencards WHERE userid IN ("2,12,29,714,543,1719")
    
        2
  •  0
  •   Ravi Vanapalli    15 年前

    检查blalist和userid的数据类型是否相同,或者blalist真的返回userid?

        3
  •  0
  •   Sarfraz    15 年前

    如果指定了正确的数据类型和pk和fk关系,请尝试以下操作:

    SELECT s.userid, s.name, s.surname, s.creditcardnum, s.items
    FROM stolencards s inner join blatable b on s.userid = b.blafield
    where b.blafield = 714