当前位置: 首页 > 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 一、字体…...

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...