sql - 转换(铸造)列以在 Oracle 中进行操作
问题描述
这就是我遇到的麻烦。我有一个表,其中有列重量,该列中的数据是 varchar2,例如:60 公斤。
当我尝试创建一个 WHERE 条件要求检索 60 公斤以下的所有东西时,它并没有给我想要的结果。
我尝试使用 to_number 进行转换,但它不起作用并给我错误“无效号码”。我还尝试使用 SUBSTR 减重并转换,但效果不佳。
有什么建议么?
提前致谢。
解决方案
您可以提取前导数字并将其转换为数字:
select to_number(regexp_substr(weight, '^[0-9]*'))
from t;
正则表达式从字符串 (the ^
) 的开头开始并提取数字。是*
任意位数。默认情况下,正则表达式匹配是“贪婪的”,这意味着它将保持匹配一行中尽可能多的数字。
如果您有小数位或负值,这可能会有点复杂。
推荐阅读
- rest - Keycloak Get Users 返回 403 禁止
- ssl - pycharm的“pip install package”错误
- firebase - Firebase Firestore 3 个随机文档字段的总和低于设定数量
- java - 在 SpringBoot 中出现 NoHandlerFoundException 时无法返回自定义响应
- python - 使用 SMTP 服务器通过 python 发送邮件
- reactjs - 如何模拟与useRef绑定的钩子中使用的回调函数?
- groovy - 在groovy中,当列表为空时如何过滤列表?
- python - AttributeError:“str”对象在从 simpletransformers 训练 QuestionAnsweringModel 时没有属性“to”
- python - 使用 python pandas 导出 CSV 时出现问题(行元素堆叠在一个单元格上)
- python - 为什么 sqlalchemy(1.3) 模型的类字段可以通过 pycharm 在 Model() 中提示?