mysql - 如何从 varchar 转换为 float 并忽略非数字字符?
问题描述
我正在尝试将 varchar(500) 中的列转换为在我的 sql 中浮动。我的代码目前如下所示:
select distinct(customer_id), cast(val_amt as float) from(
select prsn_real_gid, vital_nam, vital_performed_date,
case when val_amt ~'^[0-9]+' then val_amt else null end as val_amt from my_table);
但我收到以下错误消息
[Amazon](500310) Invalid operation: Invalid digit, Value 'X', Pos 2, Type: Double
Details:
-----------------------------------------------
error: Invalid digit, Value 'X', Pos 2, Type: Double
code: 1207
context: 1.XYXY04
query: 4147
location: :0
process: query0_118_4147 [pid=0]
-----------------------------------------------;
1 statement failed.
例如,我的数据如下所示:
customer_id | val_amt
111 | 23.45
112 | 21
113 | x
114 | /
115 |
它有字母字符、符号和空值。我只想要包括小数在内的数字。
解决方案
有时演员会给我带来麻烦。甚至 Try_Cast()。这可能对您的需要有好处。编辑:您从 SQLServer 更改为 MySQL。针对 MySQL 进行了调整
select distinct customer_id, convert(`val_amt`, float(2,2))
from my_table
where convert(`val_amt`,float(2,2)) is not null;
推荐阅读
- reactjs - 如何使用事件(event.ctrlKey)调用 ReactJS 函数?
- excel - 根据单元格值打开特定工作表 VBA
- kubernetes - pod之间的请求失败
- docker - 在 Jenkins 脚本化管道中推送后删除 docker 映像
- python - 用 NaN 填充日期间隙并插入 5 分钟分辨率数据
- docker - 如何在 GKE 中发生节点自动缩放时获得通知
- java - 持久化对象不会持久化它的所有关系对象
- primeng - 为什么 PrimeNG 没有在 p-toolbar 组件中显示这两个 ng-template 的内容?
- mule - 为 mule 3 中的每个循环在内部的对象数组中添加一个元素
- python - Python 3.7 中 fitz.Document 的解码问题