From 3a1b88db2fd8e2728e285a2f90d6ae9eed317a6e Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Thu, 29 Sep 2022 12:01:00 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=9B=B4=E6=96=B0=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E5=A4=8D=E5=88=B6=E8=87=AA=E5=8A=A8=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E5=87=BD=E6=95=B0=EF=BC=8C=E5=85=BC=E5=AE=B9=E5=AF=8C=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E8=A7=86=E5=9B=BE=E4=B8=8D=E9=9C=80=E8=A6=81=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=A0=87=E9=A2=98=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/db/migration/V40__1.15.sql | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/backend/src/main/resources/db/migration/V40__1.15.sql b/backend/src/main/resources/db/migration/V40__1.15.sql index 0b34538a39..93c1d0741f 100644 --- a/backend/src/main/resources/db/migration/V40__1.15.sql +++ b/backend/src/main/resources/db/migration/V40__1.15.sql @@ -209,3 +209,33 @@ RETURN oTemp; END ;; delimiter ; + +DROP FUNCTION IF EXISTS `GET_CHART_VIEW_COPY_NAME`; +delimiter ;; +CREATE FUNCTION `GET_CHART_VIEW_COPY_NAME`(chartId varchar(255),pid varchar(255)) + RETURNS varchar(255) CHARSET utf8mb4 + READS SQL DATA +BEGIN + +DECLARE chartName varchar(255); + +DECLARE regexpInfo varchar(255); + +DECLARE chartNameCount INTEGER; + +select (case when `type`='richTextView' then 'RICH_TEXT_VIEW' else `name` end) into chartName from chart_view where id =chartId; +/** +因为名称存在()等特殊字符,所以不能直接用REGEXP进行查找 +1.用like 'chartName%' 过滤可能的数据项 +2.REPLACE(name,chartName,'') REGEXP '-copy\\(([0-9])+\\)$' 过滤去掉chartName后的字符以 -copy(/d) 结尾的数据 +3.(LENGTH(REPLACE(name,chartName,''))-LENGTH(replace(REPLACE(name,chartName,''),'-',''))=1) 确定只出现一次 ‘-’ 防止多次copy +**/ +select (count(1)+1) into chartNameCount from chart_view +where (LENGTH(REPLACE(name,chartName,''))-LENGTH(replace(REPLACE(name,chartName,''),'-',''))=1) + and REPLACE(name,chartName,'') REGEXP '-copy\\(([0-9])+\\)$' and name like CONCAT(chartName,'%') and chart_view.scene_id=pid ; + +RETURN concat(chartName,'-copy(',chartNameCount,')'); + +END +;; +delimiter ;