首页 > 其他分享 >分析小数部分位数时遇到的小坑

分析小数部分位数时遇到的小坑

时间:2023-06-16 18:33:13浏览次数:35  
标签:解析 string part 参数 split 小数 小坑 位数

本篇随笔讲一下split()和split_part()

1、split函数

split(<str>, <pat>, [<trimTailEmpty>])
参数1是一个string
参数2要注意是一个正则表达式,不是string(这也是本次遇到小坑的地方)
参数3不常用,true是默认值,如果解析"a,b,c,,",true时得到['a','b','c'],它会把末尾的空值剔掉,如果是false得到的是['a','b','c','','']
一般来说参数3写false的场景,大概只有在检查数据质量时用到,比如给空数据和不给结果是一样的,但如果是上游新增数据时就可以提现出来差异
坑点:
楼主在解析小数时,正是因为不清楚参数2是正则表达式,而'.'正是一个特殊字符
解决这个问题的方法是split('123,45','[.]'),用中括号括起来就可以解决这个问题

2、split_part函数

string split_part(string <str>, string <separator>, bigint <start>[, bigint <end>]
刚好解决问题的时候病急乱投医看到的,就分享一下不常用的函数
参数1是string,会隐式转换
参数2也是string,这个就和split不一样
参数3理解为解析后数组起始编号,从1开始
参数4同参数3,不是步长而是终止编号,必须大于等于参数3
返回值是一个字符串,这个怎么理解呢?
比如select split_part('a,b,c,d', ',', 1, 2)得到的是'a,b',也就是相当于从split解析后的数组里再拼接好这部分字符串
一些特殊案例的返回值就不列举,大家可以自己试一下

标签:解析,string,part,参数,split,小数,小坑,位数
From: https://www.cnblogs.com/soccerchen/p/17486275.html

相关文章

  • js保留小数位数(进位舍去)问题
    toFixed(x)这个方法在使用时,它内部对于进位舍去并没有使用四舍五入方法,而是使用的是银行家舍去法,即:舍去位的数值小于5时,直接舍去舍去位的数值大于等于6时,进位舍去当舍去位的数值等于5时,分为两种情况:5后面还有其他数字(非0),则进位后舍去;若5后面是0,则根据5前一位数的奇偶性来......
  • oracle统计出正整数对应二进制的里面1的位数
    declarennumber:=15; count1int:=0;begin whilen<>0 loop n:=bitand(n,n-1); count1:=count1+1; endloop; dbms_output.put_line(count1); end;结果为:   对于负数oracle似乎处理不了,正整数没问题。......
  • js保留小数的方法(如保留一位小数)
     js保留小数的方法如下:(以保留两位为例)1、toFixed()方法需注意,保留两位小数,将数值类型的数据改变成了字符串类型//1.四舍五入varnum=1.7321;num=num.toFixed(2);console.log(num);//1.73console.log(typeofnum);//string2、Math.floor(),不四舍五入......
  • 记一次 ESLint 格式化代码踩坑(小坑)
    背景最近在尝试使用ESLint取代Prettier来格式化代码,主要受Antfu博文:https://antfu.me/posts/why-not-prettier-zh的启发,其中提到的痛点,也确实有遇到。于是决定使用Antfu大佬提供的eslint-config配置。readme把步骤说的非常清楚,在公司一步一步配置,也没有任何问题,用起来很是......
  • JS 保留小数 又一方法
    对于X进行保留两位小数的处理,则可以使用Math.round(X*100)/100进行处理。 在JavaScript中,对数值进行四舍五入操作的场景还有以下几种:向上取整:ceil向下取整:floor四舍五入:round固定精度:toFixed固定长度:toPrecision取整:parseInt、位运算 ......
  • 【剑指Offer】6、旋转数组的最小数字
    【剑指Offer】6、旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组......
  • 每日一道leetcode:4. 寻找两个正序数组的中位数
    1.题目(困难)题目链接给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。算法的时间复杂度应该为O(log(m+n))。示例1:输入:nums1=[1,3],nums2=[2]输出:2.00000解释:合并数组=[1,2,3],中位数2示例2:输入:nums1=[1,2],nu......
  • ios NSString format 保留小数点 float double
     iosNSStringformat保留小数点floatdouble self.orderCost.text=[NSStringstringWithFormat:@"%.1f元",self.order.cost.floatValue];%.1f 表示小数点一位,%.2f表示小数点2位,依次类推.格式定义TheformatspecifierssupportedbytheNSStringformattingmethodsa......
  • v6.5版本副单位应用一:录入浮动单位数量,固定一个换算率,根据公式算出销售数量(采购数量等
    v6.5版本副单位应用一:录入浮动单位数量,固定一个换算率,根据公式算出销售数量(采购数量等)1、商品档案自定义--启用一个数字自定义,比如名称叫:副单位换算率2、商品添加一个浮动单位,比如叫:副单位,换算率任意填写一个非0的值;自定义属性里面填写这个副单位对应的换算率3、单据上设置......
  • 账面库存数量(是基本单位数量)如何按2个单位显示
    账面库存数量(是基本单位数量)如何按2个单位显示举例:1、商品基本单位是件,大单位是盒2、启用2个数字自定义字段(大单位数量、小单位数量),启用1个文本自定义字段(账面库存自定义辅助数量)  3、设置自定义公式1)给“大单位数量”设置公式:if(parseInt(【账面库存】/【辅助单......