【问题标题】:Change value psql where value between, as string更改值 psql where value between, as string
【发布时间】:2020-07-06 03:20:20
【问题描述】:

我有一个查询,如果数字介于 2 个值之间,则必须设置一个值,但输出不正确,我认为是因为该列是一个字符串。有什么办法可以做到,即使它是字符串? (在输出中,我的值为 5 女巫不行)。 所有不正确的值都是整数。

SET lkp_age_category_id = 7
WHERE
   age BETWEEN '26' and '35.99';

【问题讨论】:

  • 通常,年龄不是数据库中的整数(或字符串)值,而是日期字段。您应该能够将 age 转换为整数,但我不确定 PGSQL 中的语法。您发布的查询是 Laravel Eloquent 代码吗?还是您在这里运行原始查询?
  • 这是一个原始查询,如果可能的话,目标是在不更改其类型的情况下进行此询问。我对多个类别使用了这种类型的查询,在输出时,我有一些不属于正确类别的整数值,我认为这是因为我有年龄作为字符串。
  • 强制转换是一种临时的类型更改,像SET lkp_age_category_id = 7 WHERE CAST(age AS INTEGER) BETWEEN 26 AND 35.99; 这样的东西可以让您的查询将age 列识别为整数并正确处理两个数字之间的问题。
  • 酷,工作,但作为一个数字。 (整数,浮点数,数据,不)。谢谢!
  • 我没有看到我的评论的编辑按钮。所以。不是数字,“NUMERIC”是正确的类型。

标签: laravel postgresql


【解决方案1】:

我猜,只在 SQL 端工作,您可以将值直接转换到查询中,例如:

SET lkp_age_category_id = 7
WHERE age BETWEEN '26'::float AND '35.99'::float;

也检查这个答案https://stackoverflow.com/a/13809603/917617

【讨论】:

  • 我试过这个,但在 BETWEEN 上出现错误,不知道为什么,所以我尝试使用 (CAST AS NUMBER insted) 来使其工作。
  • 我假设一个表创建表test如下:CREATE TABLE test (lkp_age_category_id varchar, age double precision);。在这种情况下有效。如果您想进一步检查问题,请随时分享表架构。
猜你喜欢
  • 2021-02-13
  • 1970-01-01
  • 2022-12-02
  • 2015-07-09
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多