【问题标题】:Converting (Casting) column to make operations in Oracle转换(铸造)列以在 Oracle 中进行操作
【发布时间】:2020-05-07 19:20:53
【问题描述】:

这就是我遇到的麻烦。我有一个表,我有列重量,该列中的数据是 varchar2,例如:60 公斤。

当我尝试创建一个 WHERE 条件来要求检索 60 公斤以下的所有东西时,它并没有给我想要的结果。

我尝试使用 to_number 进行转换,但它不起作用并给我错误“无效号码”。我也试过用 SUBSTR 减公斤并转换,但效果不佳。

有什么建议吗?

提前致谢。

【问题讨论】:

  • 请显示其他值示例。
  • 编辑添加带有一些信息的图片

标签: sql oracle


【解决方案1】:

您可以提取前导数字并将其转换为数字:

select to_number(regexp_substr(weight, '^[0-9]*'))
from t;

正则表达式从字符串的开头(^)开始提取数字。 * 适用于任意位数。默认情况下,正则表达式匹配是“贪婪”的,这意味着它将保持匹配一行中尽可能多的数字。

如果您有小数位或负值,这可能会稍微复杂一些。

【讨论】:

  • 这行得通。我还没有研究过正则表达式,基本上这与 substr 一起只是从列中的任何内容中删除数字,对吗?我将搜索正则表达式并阅读它。谢天谢地,这次我只使用整数。非常感谢您回答我的问题。
猜你喜欢
  • 2010-12-11
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
相关资源
最近更新 更多