当前位置: 首页 > news >正文

基于postgresl的gaussDB(DWS)地址省市区解析函数

地址格式为: 省(自治区,直辖市)、市、区。

直辖市的地址格式为, 北京市北京市海淀区xxxxx。 若是北京市海淀区xxx,自己改改就可以了

采用的是笨办法,穷举。

涉及的两个主要内置函数。

1. instr( <start_position> ,'str1' , 'str2' , <times>) 。

查找str2在str1出现的位置。num是出现的次数,默认是1。例如num=2,就是str2在str1第二次出现的位置。start_position是起始的位置下标,默认是从头开始即 1。

若str2在str1找不到,则返回0

instr('123456', '2')  -- 结果是: 2. 位置索引值是从1开始instr('123456', '2' , 2) -- 结果是0 , 因为2 只出现一次 instr('新疆维吾尔族自治区','自治区') -- 结果是7 

2. substr(str1, start_position, <length> )

截取字符串, 从str1 的 start_position开始截取, 截取长度是 length。length不填就是截取到字符串的最右边。

例如 start_position=2, length=3,  str1= ‘’12345678‘’

substr('123456', 2, 3) -- 结果是: 234. 因为postgres是下标索引是1开始substr('123456', 1, 3) -- 结果是: 123. 因为postgres是下标索引是1开始
substr('123456', 0, 3) -- 结果是: 123. 0也当成1substr('123456', 2) -- 结果是: 23456.  长度值不填,默认就是截取到最右边substr('新疆维吾尔族自治区',1 ,instr('新疆维吾尔族自治区','自治区'))
-- substr('新疆维吾尔族自治区',1 , 7)
-- '新疆维吾尔族自'substr('新疆维吾尔族自治区',1 ,instr('新疆维吾尔族自治区','自治区')+2)
-- substr('新疆维吾尔族自治区',1 , 7+2)
-- '新疆维吾尔族自治区'

3. 省市区解析函数


CREATE OR REPLACE FUNCTION dm.f_get_province(i_address character varying(500))RETURNS character varyingLANGUAGE plpgsqlSTABLE NOT FENCED SHIPPABLE  -- DWS特有的,如果你是postgres就不用
AS $$
DECLAREp_province VARCHAR2(500);text_var1 text;text_var2 text;text_var3 text;
BEGINSELECT CASE WHEN instr(i_address,'省') >0 THEN substr(i_address,1,instr(i_address,'省'))WHEN instr(i_address,'自治区') >0 THEN substr(i_address,1,instr(i_address,'自治区')+2)WHEN instr(i_address,'特别行政区') >0 THEN substr(i_address,1,instr(i_address,'特别行政区')+4)WHEN instr(i_address,'北京市') > 0 then substr(i_address,1, instr(i_address, '北京市')+2)WHEN instr(i_address,'天津市') > 0 then substr(i_address,1, instr(i_address, '天津市')+2)WHEN instr(i_address,'上海市') > 0 then substr(i_address,1, instr(i_address, '上海市')+2)WHEN instr(i_address,'重庆市') > 0 then substr(i_address,1, instr(i_address, '重庆市')+2)ELSE i_addressEND PROVINCE INTO p_province ;RETURN (p_province) ;EXCEPTIONWHEN others THENGET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE  ,text_var2 = MESSAGE_TEXT  ,text_var3 = PG_EXCEPTION_DETAIL;RAISE NOTICE E'--- [ 已处理的异常代码_RETURNED_SQLSTATE ] : %', text_var1;    -- 记录异常信息RAISE NOTICE E'--- [ 已处理的异常简要信息_MESSAGE_TEXT ] : %', text_var2;RAISE NOTICE E'--- [ 已处理的异常详细信息_PG_EXCEPTION_DETAIL ] : %', text_var3;RETURN ('') ;   -- 地址异常, 返回空 -- 解析异常, 直接返回空字符串
END $$
;-------  获取城市  ,  直辖市,地级市,地区、自治州、盟CREATE OR REPLACE FUNCTION dm.f_get_city(i_address character varying(500))RETURNS character varyingLANGUAGE plpgsqlSTABLE NOT FENCED SHIPPABLE
AS $$
DECLAREp_city VARCHAR2(500);text_var1 text;text_var2 text;text_var3 text;
BEGINSELECT                CASE  WHEN instr(i_address,'特别行政区') >0 THEN  case  when instr(i_address,'香港特别行政区') > 0 THEN '香港特别行政区'when instr(i_address,'澳门特别行政区') > 0 THEN '澳门特别行政区'else i_addressendWHEN instr(i_address,'北京市') > 0 then '北京市'									WHEN instr(i_address,'天津市') > 0 then '天津市'WHEN instr(i_address,'上海市') > 0 then '上海市'	 		   WHEN instr(i_address,'重庆市') > 0 then '重庆市'-- 盟是内蒙古特有, 地区则是 西藏和新疆									   WHEN instr(i_address,'自治区') > 0 THEN case  when instr(i_address,'自治州') > 0 THEN substr(i_address, instr(i_address,'自治区') + 3, instr(i_address,'自治州')+3 - (instr(i_address,'自治区')+3))-- 确保是 盟名,而不是,镇,乡村,街道的名字,  即自治区和盟之间 没有其他 地级市级行政区的 名字, 市,地区when instr(i_address,'盟') > 0and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'盟')+1 - (instr(i_address,'自治区')+3)),'市') = 0  and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'盟')+1 - (instr(i_address,'自治区')+3)),'地区') = 0 THEN substr(i_address, instr(i_address,'自治区') + 3, instr(i_address,'盟')+1 - (instr(i_address,'自治区')+3))-- 确保是 地区名,而不是,镇,乡村,街道的名字,  即自治区和地区之间 没有其他 地级市级行政区的 名字, 市,盟when instr(i_address,'地区') > 0and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'地区')+2 - (instr(i_address,'自治区')+3)),'市') = 0  and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'地区')+2 - (instr(i_address,'自治区')+3)),'盟') = 0 THEN substr(i_address, instr(i_address,'自治区') + 3, instr(i_address,'地区')+2 - (instr(i_address,'自治区')+3))-- 确保是 地级市名,而不是,镇,乡村,街道的名字,  即自治区和市 之间 没有其他 地级市级行政区的 名字, 地区,盟when instr(i_address,'市') > 0and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'市')+1 - (instr(i_address,'自治区')+3)),'地区') = 0  and instr(substr(i_address, instr(i_address,'自治区')+3,instr(i_address,'市')+1 - (instr(i_address,'自治区')+3)),'盟') = 0 THEN substr(i_address,instr(i_address,'自治区') + 3, instr(i_address,'市')+1 - (instr(i_address,'自治区')+3))else i_addressendWHEN instr(i_address,'省') > 0 THEN case when instr(i_address,'自治州') > 0 THEN substr(i_address,instr(i_address,'省') + 1, instr(i_address,'自治州')+3 - (instr(i_address,'省')+1))-- 确保是 地区名,而不是,镇,乡村,街道的名字,  即省和地区之间 没有其他 地级市级行政区的 名字, 市-- 地区 只有黑龙江省有when instr(i_address,'地区') > 0 and instr(i_address,'省') > 0and instr(substr(i_address, instr(i_address,'省')+1,instr(i_address,'地区')+2 - (instr(i_address,'省')+1)),'市') = 0 THEN substr(i_address,instr(i_address,'省') + 1, instr(i_address,'地区')+2 - (instr(i_address,'省')+1))            -- 确保是 市名,而不是,镇,乡村,街道的名字,  即省和地区之间 没有其他 地区级行政区的 名字, 地区when instr(i_address,'市') > 0 and instr(substr(i_address, instr(i_address,'省')+1,instr(i_address,'市')+1 - (instr(i_address,'省')+1)),'地区') = 0 THEN substr(i_address,instr(i_address,'省') + 1, instr(i_address,'市')+1 - (instr(i_address,'省')+1))else i_addressendELSE i_addressEND city INTO p_city ;RETURN (p_city) ;EXCEPTIONWHEN others THENGET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE  ,text_var2 = MESSAGE_TEXT  ,text_var3 = PG_EXCEPTION_DETAIL;RAISE NOTICE E'--- [ 已处理的异常代码_RETURNED_SQLSTATE ] : %', text_var1;    -- 记录异常信息RAISE NOTICE E'--- [ 已处理的异常简要信息_MESSAGE_TEXT ] : %', text_var2;RAISE NOTICE E'--- [ 已处理的异常详细信息_PG_EXCEPTION_DETAIL ] : %', text_var3;RETURN ('') ;   -- 地址异常, 返回空
END $$
;-------  获取县级  , 市辖区、县级市、县、自治县、旗、自治旗、特区、林区
-------  上级行政     直辖市,地级市,地区、自治州、盟CREATE OR REPLACE FUNCTION dm.f_get_county(i_address character varying(500))RETURNS character varyingLANGUAGE plpgsqlSTABLE NOT FENCED SHIPPABLE
AS $$
DECLAREp_county VARCHAR2(500);text_var1 text;text_var2 text;text_var3 text;
BEGINSELECT CASE WHEN instr(i_address,'神农架林区') > 0 THEN  '神农架林区' WHEN instr(i_address,'六枝特区') > 0 THEN  '六枝特区'-- 如果是 北京市北京市xx区的格式	WHEN instr(i_address,'北京市',1,2) > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'北京市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'北京市',1,2) + 3))   else i_address	end		 -- 如果是 北京市xx区的格式										WHEN instr(i_address,'北京市') > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'北京市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'北京市') + 3))             else i_address	end													WHEN instr(i_address,'天津市',1,2) > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'天津市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'天津市',1,2) + 3))   else i_address	end		WHEN instr(i_address,'天津市') > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'天津市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'天津市') + 3))             else i_address	endWHEN instr(i_address,'上海市',1,2) > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'上海市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'上海市',1,2) + 3))   else i_address	end	WHEN instr(i_address,'上海市') > 0 then case when instr(i_address,'区') > 0 THEN substr(i_address,instr(i_address,'上海市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'上海市') + 3))             else i_address	end													WHEN instr(i_address,'香港特别行政区') > 0 then case when instr(i_address,'区',1,2) > 0 THEN substr(i_address,instr(i_address,'香港特别行政区',1,2) + 7, instr(i_address,'区',1,2) + 1 - (instr(i_address,'香港特别行政区',1,2) + 7))   else i_address	end		WHEN instr(i_address,'澳门特别行政区') > 0 then case when instr(i_address,'区',1,2) > 0 THEN substr(i_address,instr(i_address,'澳门特别行政区',1,2) + 7, instr(i_address,'区',1,2) + 1 - (instr(i_address,'澳门特别行政区',1,2) + 7))   else i_address	end	WHEN instr(i_address,'重庆市',1,2) > 0 then case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'重庆市',1,2) + 3, instr(i_address,'自治县') + 3 - (instr(i_address,'重庆市',1,2) + 3))		                                                											      -- 确保是县级县名,而不是,镇,乡村,街道的名字, 即确保市和县之间 没有其他县级行政区的 名字, 区when instr(i_address,'县') > 0and  instr(substr(i_address, instr(i_address,'重庆市',1,2)+3,instr(i_address,'县')+1 - (instr(i_address,'重庆市',1,2)+3)),'区') = 0 THEN substr(i_address,instr(i_address,'重庆市',1,2) + 3, instr(i_address,'县') + 1 - (instr(i_address,'重庆市',1,2) + 3))-- 确保是县级区名,而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县when instr(i_address,'区') > 0 and instr(substr(i_address, instr(i_address,'重庆市',1,2)+3,instr(i_address,'区')+1 - (instr(i_address,'重庆市',1,2)+3)),'县') = 0 THEN substr(i_address,instr(i_address,'重庆市',1,2) + 3, instr(i_address,'区') + 1 - (instr(i_address,'重庆市',1,2) + 3))             else i_address	endWHEN instr(i_address,'重庆市') > 0 then case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'重庆市') + 3, instr(i_address,'自治县') + 3 - (instr(i_address,'重庆市') + 3))		                                                											      -- 确保是县级县名,而不是,镇,乡村,街道的名字, 即确保市和县之间 没有其他县级行政区的 名字, 区when instr(i_address,'县') > 0and  instr(substr(i_address, instr(i_address,'重庆市')+3,instr(i_address,'县')+1 - (instr(i_address,'重庆市')+3)),'区') = 0 THEN substr(i_address,instr(i_address,'重庆市') + 3, instr(i_address,'县') + 1 - (instr(i_address,'重庆市') + 3))-- 确保是县级区名,而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县when instr(i_address,'区') > 0 and instr(substr(i_address, instr(i_address,'重庆市')+3,instr(i_address,'区')+1 - (instr(i_address,'重庆市')+3)),'县') = 0 THEN substr(i_address,instr(i_address,'重庆市') + 3, instr(i_address,'区') + 1 - (instr(i_address,'重庆市') + 3))             else i_address	end-- 内蒙古自治区 特有	( 目前下辖 旗,县级市,县)	   WHEN instr(i_address,'盟') > 0 and instr(i_address,'内蒙古自治区') > 0 then case  when instr(i_address,'县') > 0-- 确保是 县级县名,而不是,镇,乡村,街道的名字,  即地区和县之间 没有其他县级行政区的 名字, 市,旗and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'县')+1 - (instr(i_address,'盟')+1)),'市') = 0  and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'县')+1 - (instr(i_address,'盟')+1)),'旗') = 0 THEN substr(i_address,instr(i_address,'盟') + 1, instr(i_address,'县')+1 - (instr(i_address,'盟')+1))-- 确保是 县级市名,而不是,镇,乡村,街道的名字,  即地区和县之间 没有其他县级行政区的 名字, 县,旗when instr(i_address,'市') > 0and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'县') = 0  and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'旗') = 0 THEN substr(i_address,instr(i_address,'盟') + 1, instr(i_address,'市')+1 - (instr(i_address,'盟')+1))-- 确保是 县级旗名,而不是,镇,乡村,街道的名字,  即地区和县之间 没有其他县级行政区的 名字, 县,市when instr(i_address,'旗') > 0and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'市') = 0and instr(substr(i_address, instr(i_address,'盟')+1,instr(i_address,'市')+1 - (instr(i_address,'盟')+1)),'县') = 0 THEN substr(i_address,instr(i_address,'盟') + 1, instr(i_address,'旗')+1 - (instr(i_address,'盟')+1))									 else i_addressend-- 黑龙江省和 西藏,新疆自治区  -- 黑龙江省_(下辖 区,县,县级市), 区,县,县级市名 无其他行政等级名-- 自治区_(县,县级市,自治县), 县,县级市,自治县 并无其他行政等级名WHEN instr(i_address,'地区') >0 THEN case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'自治县')+3 - (instr(i_address,'地区')+2))-- 确保是 县级县名,而不是,镇,乡村,街道的名字,  即地区和县之间 没有其他县级行政区的 名字, 市,区when  instr(i_address,'县') > 0and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'县')+1 - (instr(i_address,'地区')+2)),'市') = 0  and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'县')+1 - (instr(i_address,'地区')+2)),'区') = 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'县')+1 - (instr(i_address,'地区')+2))-- 确保是 县级市名,而不是,镇,乡村,街道的名字,  即地区和县级市之间 没有其他县级行政区的 名字, 县,区when  instr(i_address,'市') > 0 and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'市')+1 - (instr(i_address,'地区')+2)),'县') = 0  and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'市')+1 - (instr(i_address,'地区')+2)),'区') = 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'市')+1 - (instr(i_address,'地区')+2))-- 确保是 县级区名,而不是,镇,乡村,街道的名字,  即地区和县级区之间 没有其他县级行政区的 名字, 县,市when instr(i_address,'区',1,2) > 0 and instr(i_address,'黑龙江省') > 0 and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'区',1,2)+1 - (instr(i_address,'地区')+2)),'县') = 0  and instr(substr(i_address, instr(i_address,'地区')+2,instr(i_address,'区',1,2)+1 - (instr(i_address,'地区')+2)),'市') = 0 THEN substr(i_address,instr(i_address,'地区') + 2, instr(i_address,'区',1,2)+1 - (instr(i_address,'地区')+2))else i_addressend-- 省 和 新疆自治区 (目前下辖,县,自治县,县级市)WHEN instr(i_address,'自治州') > 0 THEN case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'自治州') + 3, instr(i_address,'自治县')+3 - (instr(i_address,'自治州')+3))-- 确保是 县级县名,而不是,镇,乡村,街道的名字,  即地区和县之间 没有其他县级行政区的 名字, 市when instr(i_address,'县') > 0and instr(substr(i_address, instr(i_address,'自治州')+3,instr(i_address,'县')+1 - (instr(i_address,'自治州')+3)),'市') = 0 THEN substr(i_address,instr(i_address,'自治州') + 3, instr(i_address,'县')+1 - (instr(i_address,'自治州')+3))-- 确保是 县级市名,而不是,镇,乡村,街道的名字,  即地区和市之间 没有其他县级行政区的 名字, 县when instr(i_address,'市') > 0and instr(substr(i_address, instr(i_address,'自治州')+3,instr(i_address,'市')+1 - (instr(i_address,'自治州')+3)),'县') = 0 THEN substr(i_address,instr(i_address,'自治州') + 3, instr(i_address,'市')+1 - (instr(i_address,'自治州')+3)) else i_addressendWHEN instr(i_address,'市') > 0  THEN case when instr(i_address,'自治县') > 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'自治县')+3 - (instr(i_address,'市')+1))when instr(i_address,'自治旗') > 0 and instr(i_address,'内蒙古自治区') > 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'自治旗')+3 - (instr(i_address,'市')+1))-- 确保是县级旗名,而不是,镇,乡村,街道的名字, 即确保市和旗之间 没有其他县级行政区的 名字, 市,县,区when instr(i_address,'旗') > 0 and instr(i_address,'内蒙古自治区') > 0 and  instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'旗') - instr(i_address,'市')),'市') = 0 and  instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'旗') - instr(i_address,'市')),'县') = 0 and  instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'旗') - instr(i_address,'市')),'区') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'旗')+1 - (instr(i_address,'市')+1))    -- 确保是县级县名,而不是,镇,乡村,街道的名字, 即确保市和县之间 没有其他县级行政区的 名字, 市,区 ,旗when instr(i_address,'县') > 0 and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'县') - instr(i_address,'市')),'市') = 0  and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'县') - instr(i_address,'市')),'区') = 0 and instr(substr(i_address, instr(i_address,'市')+1,instr(i_address,'县') - instr(i_address,'市')),'旗') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'县')+1 - (instr(i_address,'市')+1))when instr(i_address,'辉县市') > 0 THEN '辉县市'-- 确保是县级市名,而不是,镇,乡村,街道的名字, 即确保市和市之间 没有其他县级行政区的 名字, 区 ,县 旗when instr(i_address,'市',1,2) > 0 and instr(substr(i_address, instr(i_address,'市',1,1)+1,(instr(i_address,'市',1,2)-instr(i_address,'市'))),'区') = 0 and instr(substr(i_address, instr(i_address,'市',1,1)+1,(instr(i_address,'市',1,2)-instr(i_address,'市'))),'县') = 0 and instr(substr(i_address, instr(i_address,'市',1,1)+1,(instr(i_address,'市',1,2)-instr(i_address,'市'))),'旗') = 0 THEN substr(i_address,instr(i_address,'市',1,1) + 1, instr(i_address,'市',1,2)+1 - (instr(i_address,'市',1,1)+1))-- 确保是县级区名(自治区),而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县 旗,市when instr(i_address,'自治区') > 0 and instr(i_address,'区',1,2)  > 0 and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区',1,2)-instr(i_address,'市'))),'市') = 0 and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区',1,2)-instr(i_address,'市'))),'县') = 0 and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区',1,2)-instr(i_address,'市'))),'旗') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'区',1,2)+1 - (instr(i_address,'市')+1))-- 确保是县级区名(省),而不是,镇,乡村,街道的名字, 即确保市和区之间 没有其他县级行政区的 名字, 县 旗,市when instr(i_address,'省') > 0 and instr(i_address,'区') and instr(i_address,'自治区') = 0and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区')-instr(i_address,'市'))),'市') = 0 and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区')-instr(i_address,'市'))),'县') = 0 and instr(substr(i_address, instr(i_address,'市')+1,(instr(i_address,'区')-instr(i_address,'市'))),'旗') = 0 THEN substr(i_address,instr(i_address,'市') + 1, instr(i_address,'区')+1 - (instr(i_address,'市')+1))else i_addressendELSE i_addressEND county INTO p_county ;RETURN (p_county) ;EXCEPTIONWHEN others THENGET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE  ,text_var2 = MESSAGE_TEXT  ,text_var3 = PG_EXCEPTION_DETAIL;RAISE NOTICE E'--- [ 已处理的异常代码_RETURNED_SQLSTATE ] : %', text_var1;    -- 记录异常信息RAISE NOTICE E'--- [ 已处理的异常简要信息_MESSAGE_TEXT ] : %', text_var2;RAISE NOTICE E'--- [ 已处理的异常详细信息_PG_EXCEPTION_DETAIL ] : %', text_var3;RETURN ('') ;   -- 地址异常, 返回空
END $$
;

相关文章:

基于postgresl的gaussDB(DWS)地址省市区解析函数

地址格式为&#xff1a; 省(自治区&#xff0c;直辖市)、市、区。 直辖市的地址格式为&#xff0c; 北京市北京市海淀区xxxxx。 若是北京市海淀区xxx&#xff0c;自己改改就可以了 采用的是笨办法&#xff0c;穷举。 涉及的两个主要内置函数。 1. instr( <start_positio…...

【Golang】Golang进阶系列教程--Go 语言 new 和 make 关键字的区别

文章目录 前言new源码使用 make源码使用 总结 前言 本篇文章来介绍一道非常常见的面试题&#xff0c;到底有多常见呢&#xff1f;可能很多面试的开场白就是由此开始的。那就是 new 和 make 这两个内置函数的区别。 在 Go 语言中&#xff0c;有两个比较雷同的内置函数&#xf…...

Day 9 C++ 内存分区模型

目录 内存四区 代码区 全局区 栈区 堆区 内存四区意义&#xff1a; 程序运行前后内存变化 程序运行前 代码区 全局区 程序运行后 栈区 堆区 new操作符 基本语法 创建 释放&#xff08;delete&#xff09; 内存四区 代码区 代码区&#xff08;Code Segment&…...

STM32 CubeMX 定时器(普通模式和PWM模式)

STM32 CubeMX STM32 CubeMX 定时器&#xff08;普通模式和PWM模式&#xff09; STM32 CubeMXSTM32 CubeMX 普通模式一、STM32 CubeMX 设置二、代码部分STM32 CubeMX PWM模式一、STM32 CubeMX 设置二、代码部分总结 STM32 CubeMX 普通模式 一、STM32 CubeMX 设置 二、代码部分 …...

mysql清除主从复制关系

mysql清除主从复制关系 mysql主从复制中,需要将主从复制关系清除,需要取消其从库角色。这可通过执行RESET SLAVE ALL清除从库的同步复制信息、包括连接信息和二进制文件名、位置。从库上执行这个命令后,使用show slave status将不会有输出。reset slave是各版本Mysql都有的功…...

Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

文章目录 EurekaEureka组件可以实现哪些功能什么是CAP原则&#xff1f;服务注册代码实战搭建注册中心服务A搭建服务B搭建启动服务启动注册中心启动服务A启动服务B 结束语 Eureka 这篇文章先讲述一下Eureka的应用场景、代码实现案例&#xff0c;多个服务模块注册到Euraka中&…...

【docker】docker部署nginx

目录 一、步骤二、示例 一、步骤 1.搜索nginx镜像 2.拉取nginx镜像 3.创建容器 4.测试nginx 二、示例 1.搜索nginx镜像 docker search nginx2.拉取nginx镜像 docker pull nginx3.创建容器&#xff0c;设置端口映射、目录映射 # 在root目录下创建nginx目录用于存储nginx数据…...

苍穹外卖-day08

苍穹外卖-day08 本项目学自黑马程序员的《苍穹外卖》项目&#xff0c;是瑞吉外卖的Plus版本 功能更多&#xff0c;更加丰富。 结合资料&#xff0c;和自己对学习过程中的一些看法和问题解决情况上传课件笔记 视频&#xff1a;https://www.bilibili.com/video/BV1TP411v7v6/?sp…...

【matlab】机器人工具箱快速上手-动力学仿真(代码直接复制可用)

动力学代码&#xff0c;按需修改参数 各关节力矩-关节变量的关系曲线&#xff1a; %%%%%%%%SCARA机器人仿真模型 l[0.457 0.325]; L(1) Link(d,0,a,l(1),alpha,0,standard,qlim,[-130 130]*pi/180);%连杆1 L(2)Link(d,0,a,l(2),alpha,pi,standard,qlim,[-145 145]*pi/180);%连…...

MySQL高级篇第2章(MySQL的数据目录)

文章目录 1、MySQL8的主要目录结构1.1 数据库文件的存放路径1.2 相关命令目录1.3 配置文件目录 2、数据库和文件系统的关系2.1 查看默认数据库2.2 数据库在文件系统中的表示2.3 表在文件系统中的表示2.3.1 InnoDB存储引擎模式2.3.2 MyISAM存储引擎模式 2.4 小结 1、MySQL8的主要…...

【通过改变压缩视频的分辨率实现高效的视频语义分割】CVPR2022论文精度

Efficient Semantic Segmentation by Altering Resolutions for Compressed Videos Efficient Semantic Segmentation by Altering Resolutions for Compressed VideosBasic Information:论文简要 :背景信息:a. 理论背景:b. 技术路线: 结果:a. 详细的实验设置:b. 详细的实验结果…...

golang 时间工具类

用不习惯也嫌麻烦每次都去操作时间&#xff0c;然后就自己写了个时间工具类 package timeutilimport ("time" )func New() *TimeUtil {return &TimeUtil{} }// TimeUtil 是时间操作工具类 type TimeUtil struct{}// GetFormattedDate 获取格式化的日期字符串 fun…...

剑指 Offer 44.!! 数字序列中某一位的数字

参考资料 剑指 Offer 44. 数字序列中某一位的数字 中等 351 相关企业 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中&#xff0c;第5位&#xff08;从下标0开始计数&#xff09;是5&#xff0c;第13位是1&#xff0c;第19位是4&#xff0c;等等。…...

16K个大语言模型的进化树;81个在线可玩的AI游戏;AI提示工程的终极指南;音频Transformers课程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; LLM 进化树升级版&#xff01;清晰展示 15821 个大语言模型的关系 这张进化图来自于论文 「On the Origin of LLMs: An Evolutionary …...

Docker Compose 容器编排 + Docker--harbor私有仓库部署与管理

目录 一、Docker Compose简介 1、Docker Compose 的YAML 文件格式及编写注意事项 2、Docker compose 使用的三个步骤 3、 Docker Compose配置常用字段 4、 Docker Compose 常用命令 5、 Docker Compose 文件结构 二&#xff1a; Docker Compose 安装 1、Docker Compose…...

九五从零开始的运维之路(其二十六)

文章目录 前言一、概述1.什么是数据库2.数据库能干什么&#xff08;一&#xff09;企业应用&#xff08;二&#xff09;金融行业&#xff08;三&#xff09;电子商务&#xff08;四&#xff09;社交媒体&#xff08;五&#xff09;物联网 3.为什么要用数据库&#xff0c;优势、…...

29.Git版本控制工具

1.Git简介 Git是一开源的分布式版本控制系统&#xff0c;提供了存储代码、管理版本历史、分支和合并等功能。 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理&#xff0c;是软件配置管理的核心思想之一。它的主要目的是跟踪和记录软件开发过程…...

【算法题】2790. 长度递增组的最大数目

题目&#xff1a; 给你一个下标从 0 开始、长度为 n 的数组 usageLimits 。 你的任务是使用从 0 到 n - 1 的数字创建若干组&#xff0c;并确保每个数字 i 在 所有组 中使用的次数总共不超过 usageLimits[i] 次。此外&#xff0c;还必须满足以下条件&#xff1a; 每个组必须…...

Qt设置开机自启动无法读取配置文件

问题&#xff1a; Qt5.9.4再注册表中加入开机自启动后&#xff0c;每次开机可以启动&#xff0c;但是无法读取配置文件 解决方案 再main()方法中加入QDir::setCurrent(QCoreApplication::applicationDirPath());即可。 static void AutoRunWithSystem(bool bAutoRun) {// 获取…...

解决Font family [‘sans-serif’] not found问题

序言 以下测试环境都是在 anaconda3 虚拟环境下执行。 激活虚拟环境 conda activate test_python_env 或 source activate test_python_env工具&#xff1a; WinSCP Visual Studio Code 这里笔者使用 WinSCP 工具连接&#xff0c;编辑工具是 Visual Studio Code 一、字体…...

UI-TARS-desktop快速上手:10分钟完成Qwen3-4B多模态Agent桌面版部署与任务验证

UI-TARS-desktop快速上手&#xff1a;10分钟完成Qwen3-4B多模态Agent桌面版部署与任务验证 想体验一个能看懂屏幕、操作软件、帮你完成任务的AI助手吗&#xff1f;今天要介绍的UI-TARS-desktop&#xff0c;就是一个内置了强大视觉理解能力的多模态AI Agent桌面应用。它基于Qwe…...

Guardrails未来版本路线图:10大新功能全面展望与AI安全演进

Guardrails未来版本路线图&#xff1a;10大新功能全面展望与AI安全演进 【免费下载链接】guardrails Adding guardrails to large language models. 项目地址: https://gitcode.com/gh_mirrors/gu/guardrails 在大型语言模型&#xff08;LLM&#xff09;应用日益普及的今…...

开源堡垒机Guacamole二次开发实战:SFTP与录屏功能深度优化

1. Guacamole堡垒机二次开发背景与挑战 Guacamole作为一款优秀的开源堡垒机&#xff0c;在企业远程办公和运维管理中扮演着重要角色。但在实际生产环境中&#xff0c;我们常常会遇到一些原生功能无法满足需求的情况。比如在分布式部署场景下&#xff0c;guacd服务与Java后端分离…...

如何通过智能求职助手提升职位时间筛选效率?揭秘高效求职新方法

如何通过智能求职助手提升职位时间筛选效率&#xff1f;揭秘高效求职新方法 【免费下载链接】boss-show-time 展示boss直聘岗位的发布时间 项目地址: https://gitcode.com/GitHub_Trending/bo/boss-show-time 在当今竞争激烈的就业市场中&#xff0c;职位时间筛选已成为…...

深度解析:Element Plus架构设计与实现原理

深度解析&#xff1a;Element Plus架构设计与实现原理 【免费下载链接】element-plus &#x1f389; A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus Element Plus作为Vue.js 3生态中最具影响力的企业级UI…...

Visio高效安装与激活全攻略:从零开始到成功运行

1. Visio安装前的准备工作 第一次安装Visio的朋友们&#xff0c;我强烈建议先做好这些准备工作。我自己在帮同事安装Visio时&#xff0c;经常遇到因为前期准备不足导致安装失败的情况。首先&#xff0c;检查你的电脑是否已经安装了其他版本的Office软件。如果之前安装过Office …...

4象限解析OpenRocket:开源火箭仿真工具的技术突破与实践指南

4象限解析OpenRocket&#xff1a;开源火箭仿真工具的技术突破与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 在模型火箭设计领域&#xff0c;物…...

AI驱动的科研绘图革命:DeTikZify如何终结图表代码的手动时代

AI驱动的科研绘图革命&#xff1a;DeTikZify如何终结图表代码的手动时代 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 当deadline遇上绘图难题&a…...

告别重复操作:用快马生成智能浏览器扩展,极速提升前端调试与数据提取效率

作为一名前端开发者&#xff0c;每天都要和网页元素打交道。调试样式、提取数据这些重复性工作&#xff0c;如果全靠手动操作&#xff0c;不仅效率低下还容易出错。最近我发现用InsCode(快马)平台可以快速生成定制化的浏览器扩展&#xff0c;把那些繁琐操作变成一键自动化&…...

Unity资源提取技术解密:AssetRipper效能革命与实战指南

Unity资源提取技术解密&#xff1a;AssetRipper效能革命与实战指南 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 在游戏开发迭代加速…...