PostgreSQL截取字符串到指定字符位置詳細(xì)示例
今天在做PG數(shù)據(jù)到HIVE的數(shù)據(jù)交換任務(wù)時(shí),因?yàn)槟硞€(gè)字段在PG中是Varchar類型,hive是bigint,而偏偏PG 中該字段的存儲(chǔ)值都被加了小數(shù)點(diǎn)位,導(dǎo)致字段類型轉(zhuǎn)換失敗。
現(xiàn)在就需要將字符串中小數(shù)點(diǎn)后的部分給截掉。
開(kāi)始時(shí)嘗試使用的是CHARINDEX來(lái)獲取小數(shù)點(diǎn)的位置,然后使用substring函數(shù)截取該位置之前的數(shù)值。
select CAST(SUBSTRING(sal_qty, 1 , CHARINDEX('.',sal_qty)-1)as bigint)
但是運(yùn)行時(shí)發(fā)現(xiàn)PG中沒(méi)有CHARINDEX函數(shù)。
SQL 錯(cuò)誤 [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.
在官方文檔中查找相應(yīng)的替換函數(shù)
https://www.postgresql.org/docs/current/functions-string.html
找到一個(gè)position函數(shù)
position ( substring text IN string text ) → integer Returns first starting index of the specified substring within string, or zero if it's not present. position('om' in 'Thomas') → 3
測(cè)試一下
select sal_qty, cast(SUBSTRING(sal_qty, 1 , position ('.' in sal_qty) - 1) as bigint) as sal_qty_int from table_test
返回結(jié)果,符合預(yù)期。
另外還可以嘗試使用strpos函數(shù),功能和position相同,但要注意參數(shù)位置
strpos ( string text, substring text ) → integer Returns 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
總結(jié)
到此這篇關(guān)于PostgreSQL截取字符串到指定字符位置的文章就介紹到這了,更多相關(guān)PGSQL截取字符串到指定位置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Postgresql 實(shí)現(xiàn)查詢一個(gè)表/所有表的所有列名
這篇文章主要介紹了Postgresql 實(shí)現(xiàn)查詢一個(gè)表/所有表的所有列名,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12詳解如何定位postgreSQL數(shù)據(jù)庫(kù)中未被使用過(guò)的索引
在生產(chǎn)環(huán)境上,由于不規(guī)范的優(yōu)化措施,數(shù)據(jù)庫(kù)中可能存在大量的索引,并且相當(dāng)一部分的索引重未被使用過(guò),今天帶大家如何找出這些索引,本文給大家介紹了定位postgreSQL數(shù)據(jù)庫(kù)中未被使用過(guò)的索引的方法,需要的朋友可以參考下2024-03-03PostgreSQL 實(shí)現(xiàn)定時(shí)job執(zhí)行(pgAgent)
這篇文章主要介紹了PostgreSQL 實(shí)現(xiàn)定時(shí)job執(zhí)行(pgAgent),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01詳解PostgreSql數(shù)據(jù)庫(kù)對(duì)象信息及應(yīng)用
這篇文章主要介紹了PostgreSql數(shù)據(jù)庫(kù)對(duì)象信息及應(yīng)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12解決postgreSql 將Varchar類型字段修改為Int類型報(bào)錯(cuò)的問(wèn)題
這篇文章主要介紹了解決postgreSql 將Varchar類型字段修改為Int類型報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12在PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)清理和過(guò)期清理
在 PostgreSQL 中,可以通過(guò)多種方式實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)清理和過(guò)期處理,以確保數(shù)據(jù)庫(kù)不會(huì)因?yàn)榇鎯?chǔ)過(guò)多過(guò)時(shí)或不再需要的數(shù)據(jù)而導(dǎo)致性能下降和存儲(chǔ)空間浪費(fèi),本文給大家介紹了一些常見(jiàn)的方法及詳細(xì)示例,需要的朋友可以參考下2024-07-07Debian中PostgreSQL數(shù)據(jù)庫(kù)安裝配置實(shí)例
這篇文章主要介紹了Debian中PostgreSQL數(shù)據(jù)庫(kù)安裝配置實(shí)例,一個(gè)簡(jiǎn)明教程,需要的朋友可以參考下2014-06-06Ubuntu中卸載Postgresql出錯(cuò)的解決方法
這篇文章主要給大家介紹了關(guān)于在Ubuntu中卸載Postgresql出錯(cuò)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09PostGresql 實(shí)現(xiàn)四舍五入、小數(shù)轉(zhuǎn)換、百分比的用法說(shuō)明
這篇文章主要介紹了PostGresql 實(shí)現(xiàn)四舍五入、小數(shù)轉(zhuǎn)換、百分比的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01