【问题标题】:How to convert 1 row in a SQL SELECT Statement to INT如何将 SQL SELECT 语句中的 1 行转换为 INT
【发布时间】:2020-10-02 13:30:28
【问题描述】:

我有一个 SELECT 语句,我在其中从表中选择多行,除了其中一行之外的所有行都是 STRING 值,另一行是 INT。我希望能够读取包含整数的行,并将该行转换为 Int,这样我就可以使用它与屏幕上的其他 INT 值进行比较。

如果我现在尝试比较它,它会删除尾随的 0,因为它正在将其作为字符串读取,因此它认为 '12' 大于 '40',因为它正在读取 '12'(屏幕上的值)和“4”(从表中)删除 0。

我正在使用 Java 在屏幕上获取一个值,这工作正常,它会将其转换为 INT,并且可以正常显示,因此我现在需要将“年龄”列转换为 INT,以便将其与屏幕上的值,SQL 值不删除末尾的 0,因为它当前将其读取为字符串。

下面是我的 SELECT 语句:

SELECT name, age, city, department
FROM myTable

WHERE age >= '"+valueOnScreen+"'

如果 age = 25 和 valueOnScreen = 20,它会正常工作,因为它认为它是 25 和 20。

如果 age = 20 和 valueOnScreen = 5,它将不起作用,因为它认为它是 2 和 5

我试过了:

DECLARE @AGE INT
SELECT name, @AGE = age, city, department
FROM myTable

WHERE age >= '"+valueOnScreen+"'

我收到错误:'为变量赋值的 SELECT 语句不得与数据检索操作结合使用。;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:为变量赋值的 SELECT 语句不得与数据检索操作结合使用'

任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 我认为您对“行”和“列”之间的区别感到困惑,这使得问题难以理解。同时标记您正在使用的数据库。

标签: sql string integer


【解决方案1】:

您的代码看起来像 SQL Server。您应该构建查询以获取 参数。查询类似于:

SELECT name, age, city, department
FROM myTable
WHERE age >= ?;

然后您将传入一个 integer 参数进行比较。这是完成您正在尝试做的事情的正确方法。

注意:这个答案实际上并不依赖于底层数据库。参数始终是传递用户提供的常量值的正确方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2022-12-25
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多