作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字段,其中数字以 3 种格式存储为文本:
xx. (example: 31.)
xx.x (example: 31.2)
xx x/x (example: 31 2/7)
对于最终结果,我需要所有数字都采用十进制格式(即 xx.x)。
将前两种格式转换为小数相当简单,但我还没有完全弄清楚如何转换最后一种情况,因为简单的 CAST 函数不起作用。我已经使用 INSTR 函数来隔离这些数字的所有小数情况,但我不知道从那里去哪里。我查看了其他示例,但 Netezza 中不存在一些引用的函数(如 SUBSTRING_INDEX)。
最佳答案
我认为@Niederee 有蛮力解决方案,但我会使用 sql extensions toolkit .
create temporary table fractions (
val nvarchar(64)
) distribute on random;
insert into fractions values ('2.');
insert into fractions values ('2.3');
insert into fractions values ('31 2/7');
insert into fractions values('2 0/8');
insert into fractions values('516 56/537');
select
val
,case
when regexp_like(val,'^[\d\.]+$') then val::numeric(20,10) --Cast it if we can.
when regexp_like(val,'^[\d\.\s\/]+$')
then regexp_extract(val,'\d+',1,1)::numeric(20,10) --Whole.
+ (
regexp_extract(val,'\d+',1,2)::numeric(20,10) --Numerator.
/ regexp_extract(val,'\d+',1,3)::numeric(20,10) --Denominator.
)
else null
end
from
fractions;
关于sql - 在 Netezza 中将带分数转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32042741/
我试图在我创建的名为 Fraction 的类中使用 __rsub__ 函数。 这是分数类代码: def __init__(self, num, denom): ''' Creates a ne
我有简单的文本输入: m 我需要这个输入来只接受数字,如果数字是整数,它应该只允许 5 个字符,即 12345 .如果数字包含分数,则应允许 8 个字符,即 1234
我是一名优秀的程序员,十分优秀!