【问题标题】:Query for simple condition of my sql查询mysql的简单条件
【发布时间】:2015-04-18 06:44:42
【问题描述】:

我想写一个简单的查询。检查整列,如果列在点之后包含一个值,例如(5.1、2.6、3.7、0.3 等),那么它只是在该值中加上 0.01

【问题讨论】:

  • 如果时间列的值为 4.2,则表示 4 mints 和 20 sec ,所以有些人认为哦,这意味着 4 mints 和 2 secs。为了克服这种混乱,我想在该字段中添加一秒,更新的字段将是 4.21。

标签: php phpmyadmin


【解决方案1】:

您可以将读取字段的方式更改为:

select convert(varchar,CONVERT(decimal(10,2),123.1))

如果字段是字符串字段,你可以更新它:

update table set value = convert(varchar,CONVERT(decimal(10,2),value))

如果该字段是十进制的,则不能在其后面存储零,而必须添加尾随的 1。

update table set value = CONVERT(decimal(10,1),value) + 0.01
where value == ROUND(value,1)

注意 where 语句,这样查询只会更新只有一位小数的行。

【讨论】:

  • value 字段的数据类型为 double
  • 所以尝试第三个代码示例或使用第一个选择将值读取到 php。
  • 感谢您的回答,我解决了这个问题,谢谢,现在我有一个简单的另一个问题。我想对结果列进行排序,然后更新位置列。例如,如果 A 的结果值最小,则 Position 列变为 1。它检查第二个最小值如何,然后将 position 列更新为 2。依此类推。
  • 尝试添加order by mycolumn ascorder by mycolumn desc。请标记导致您的解决方案的答案,以便您的问题可见待解决。如果您以其他方式解决了它,请将您的解决方案发布为答案并将其标记为解决方案。
【解决方案2】:

让我们试试下面的思路:

select my_value + ((ceil(my_value * 10) = (my_value * 10)) / 100)
from my_table

my_table 是您的值所在的表。my_value 是您尝试查询的值。 my_value * 10 是整数当且仅当值在 . 之后有一个数字。 ceil(my_value * 10) = (my_value * 10) 如果数字是整数,则为 1,否则为 0。因此,当我们需要添加 0.01 时,我们得到 1,而当我们需要保持原样时,我们得到 0。因此,如果我们将结果除以 100 并将其添加到 my_value,我们将得到所需的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 2012-05-21
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多