今天在做PG数据到HIVE的数据交换任务时,因为某个字段在PG中是Varchar类型,hive是bigint,而偏偏PG 中该字段的存储值都被加了小数点位,导致字段类型转换失败。

现在就需要将字符串中小数点后的部分给截掉。
开始时尝试使用的是CHARINDEX来获取小数点的位置,然后使用substring函数截取该位置之前的数值。

select CAST(SUBSTRING(sal_qty, 1 ,  CHARINDEX('.',sal_qty)-1)as bigint)

但是运行时发现PG中没有CHARINDEX函数。

SQL 错误 [42883]: ERROR: function charindex(unknown, character varying) does not exist建议:No function matches the given name and argument types. You might need to add explicit type casts.

在官方文档中查找相应的替换函数
https://www.postgresql.org/docs/current/functions-string.html
找到一个position函数

position ( substring text IN string text ) → integerReturns first starting index of the specified substring within string, or zero if it's not present.position('om' in 'Thomas') → 3

测试一下

select sal_qty, cast(SUBSTRING(sal_qty, 1 , position ('.'  in sal_qty) - 1) as bigint) as sal_qty_int from table_test

返回结果,符合预期。

另外还可以尝试使用strpos函数,功能和position相同,但要注意参数位置

strpos ( string text, substring text ) → integerReturns first starting index of the specified substring within string, or zero if it's not present. (Same as position(substring in string), but note the reversed argument order.)strpos('high', 'ig') → 2
select sal_qty, cast(SUBSTRING(sal_qty, 1 ,  strpos(sal_qty,'.')-1)as bigint) as sal_qty_int from table_test

PG SQL截取字符串到指定字符位置相关推荐

  1. Excel中如何截取字符串中指定字符后的部分字符

    1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示:复制单元 ...

  2. c++编写函数实现字符串中指定字符位置插入字符串

    #include <iostream> #include<bits/stdc++.h> using namespace std; //定义一个void函数,有三个参数,分别是s ...

  3. php 按 截取字符串,PHP按符号截取字符串的指定部分

    字符串截取在php开发中是比较常用的: 而且对于截取的需求也有很多种: 就比如说对url链接的操作:http://baijunyao.com/article/12 有时我们想截取最后一个斜杠'/'后面 ...

  4. Golang中获取中文字符串的子串字符位置及截取子串

    Golang中获取中文字符串的子串字符位置及截取子串 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...

  5. SQL截取字符串(substring与patindex的使用)

    SQL截取字符串(substring与patindex的使用) 首先学习两个函数 1.substring  返回字符.binary.text 或 image 表达式的一部分.       基本语法:S ...

  6. 去掉字符串头尾指定字符

    package com.cloudsky.utils; /*** @ClassName: TrimCharUtil* @Author: lulu* @Description: 去掉字符串头尾指定字符* ...

  7. SQL截取字符串替换

    SQL截取字符串替换 字符串截取 1. left()截取左边 2. right()截取右边 3. SUBSTR() / SUBSTRING() 截取 SUBSTRING(name,5,3) 截取nam ...

  8. php字符串以符号截取,PHP按符号截取字符串的指定部分的实现方法

    大家在开发中可能会遇到需要截取某一个部分的内容,方法有很多,可以使用正则,也可以用内置函数,但该如何才能尽人意呢?傲世今天就给大家开开眼. 对于截取的需求也分很多种,字符串的截取php内置函数就有很多 ...

  9. php截取多个分割符号_PHP按符号截取字符串的指定部分的实现方法

    字符串截取在php开发中是比较常用的: 而且对于截取的需求也有很多种: 有时我们想截取最后一个斜杠'/'后面的数字: 有时我们又需要截取第一个斜杠'/'前面的内容判断用户输入的url链接带不带http ...

最新文章

  1. C#远程访问linux(ubuntu)或windows的mysql数据库
  2. Python_XlrdXlwt
  3. leetcode 714. 买卖股票的最佳时机含手续费(dp)
  4. 清华大学出品:罚梯度范数提高深度学习模型泛化性
  5. 神经网络造“汉字”新技能全开,biangbiang面自愧不如
  6. [微信小程序] js变量名称写活
  7. SQL Server 默认跟踪应用4 -- 检测日志文件自动增长
  8. go import 导入包名前加下划线 _
  9. 七日杀服务器怎么修改天数,七日杀如何调整天数 | 手游网游页游攻略大全
  10. c语言 菜单选择,设计一通过 c语言 个简单实用的菜单,通过菜单选择不同的菜单项并实现相应的功能。...
  11. 报错Exception opening port “18080“ (port may be in use), cause: “java.net.BindException: Address alrea
  12. 太极限了,JDK的这个BUG都能被我踩到!
  13. 一百个最有用的网站地址
  14. 关于数组名:数组名是数组首元素的地址
  15. MSCKF 源码解析 一
  16. 大家来找茬游戏助手、外挂的实现
  17. boost multi_index_container 多索引容器的使用
  18. 【xtku】熟知idown万用下载器的使用办法
  19. 常用目录加密的朋友请看:千万别用《高强度文件夹加密大师》这个软件。
  20. 智慧水务软件-科学系统架构-数字化管理

热门文章

  1. react前端下载后端返回文件流(文件流下载excel、csv)
  2. Linux set 命令的使用方法
  3. Linux systemctl 详解自定义 systemd unit
  4. 一款企业级的供应链采购系统,已开源
  5. 智慧武汉地理信息大数据中心上线 比百度地图更全
  6. SVM原理篇之手撕SVM
  7. [1039]linux使用sz命令下载大于4G的文件到windows
  8. hdu--改革春风吹满地
  9. 百家饭OpenAPI v0.6.0新版夏日发布!快来看(3)——多端API整合测试功能
  10. 华为nova6计算机,教大家华为nova6 5G手机怎么使用Huawei Share来连接电脑传输文件方法...