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

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...