【问题标题】:How do you convert this SQL query from String to Int?如何将此 SQL 查询从 String 转换为 Int?
【发布时间】:2014-06-20 21:15:31
【问题描述】:

如何将此 SQL 查询从 String 转换为 Int ?

String sql = "DELETE FROM DEMO.QUESTION " +
      "WHERE CAST (QUESTION_ID = '"+question+"' ,INT(10))";

【问题讨论】:

  • 嗯,笑起来真好……确实。
  • 你能帮帮我吗?
  • 具体你想做什么!?假设您使用的是 MySQL,那将是 0 或 1……但是(至少对我而言)这没有任何意义!您可以只删除 matchig 值并继续!
  • 或者...您是否尝试将question 变量转换为int 并在此之后执行删除?如果question 不是一个有效的类似int 的字符串会怎样?
  • 是的,我想这样做

标签: java derby


【解决方案1】:

回答您的问题:您正在尝试对布尔值执行 cast 操作,我认为这不是您想要的(无论如何这无关紧要)。

所以,我认为您正在尝试做的是:

sql = "delete from demo.question " + 
      "where QUESTION_ID = cast('" + question + "', int)"

关于这个的一些cmets:

  1. 您的 question 变量可以在代码中解析为整数值,然后再将其传递给查询...这样就不再需要您的 cast 函数了。
  2. 如果你的question 变量的值是"abc",你会怎么做?考虑一下这种情况。
  3. 您的查询很容易受到 SQL 注入攻击。考虑使用准备好的语句。

更新

由于您使用的是 Java,并加强了我的第三个观察,您应该查看 the Java tutorial on the topic(以及 this)。

我坚持认为,与其在查询中传递字符串并将其强制转换,不如在 Java 代码中将其解析为整数,从而摆脱您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2016-01-23
    • 2022-01-22
    相关资源
    最近更新 更多