Sfoglia il codice sorgente

update 删除 自定义 find_in_set 函数 在代码层面适配

疯狂的狮子li 3 anni fa
parent
commit
3210fce113

+ 11 - 2
ruoyi-common/src/main/java/com/ruoyi/common/helper/DataBaseHelper.java

@@ -53,9 +53,18 @@ public class DataBaseHelper {
 
     public static String findInSet(Object var1, String var2) {
         DataBaseType dataBasyType = getDataBasyType();
+        String var = Convert.toStr(var1);
         if (dataBasyType == DataBaseType.SQL_SERVER) {
-            return "charindex(" + Convert.toStr(var1) + ", " + var2 + ") <> 0";
+            // charindex(',100,' , ',0,100,101,') <> 0
+            return "charindex('," + var + ",' , ','+" + var2 + "+',') <> 0";
+        } else if (dataBasyType == DataBaseType.POSTGRE_SQL) {
+            // (select position(',100,' in ',0,100,101,')) <> 0
+            return "(select position('," + var + ",' in ','||" + var2 + "||',')) <> 0";
+        } else if (dataBasyType == DataBaseType.ORACLE) {
+            // instr(',0,100,101,' , ',100,') <> 0
+            return "instr(','||" + var2 + "||',' , '," + var + ",') <> 0";
         }
-        return "find_in_set(" + Convert.toStr(var1) + ", " + var2 + ") <> 0";
+        // find_in_set(100 , '0,100,101')
+        return "find_in_set(" + var + " , " + var2 + ") <> 0";
     }
 }

+ 0 - 16
script/sql/oracle/oracle_ry_vue_4.X.sql

@@ -940,22 +940,6 @@ insert into sys_oss_config values (2, 'qiniu',  'XXXXXXXXXXXXXXX',  'XXXXXXXXXXX
 insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX',  'XXXXXXXXXXXXXXX', 'ruoyi',             '', 'http://oss-cn-beijing.aliyuncs.com',   'N', '',            '1', '', NULL, 'admin', sysdate, 'admin', sysdate);
 insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX',  'XXXXXXXXXXXXXXX', 'ruoyi-1250000000',  '', 'http://cos.ap-beijing.myqcloud.com',   'N', 'ap-beijing',  '1', '', NULL, 'admin', sysdate, 'admin', sysdate);
 
-
--- ----------------------------
--- 函数 ,代替mysql的find_in_set
--- 例如: select * from sys_dept where FIND_IN_SET (101,ancestors) <> 0
--- mysql可接受0或其它number做为where 条件,oracle只接受表达式做为where 条件
--- ----------------------------
-create or replace function find_in_set(arg1 in varchar2,arg2 in varchar)
-return number is Result number;
-begin
-select instr(','||arg2||',' , ','||arg1||',') into Result from dual;
-return(Result);
-end find_in_set;
-
--- 函数分隔符
-/
-
 -- ----------------------------
 -- 钩子 ,用于session连接之后 自动设置默认的date类型格式化 简化时间查询
 -- 如需设置其它配置 可在此钩子内任意增加处理语句

+ 0 - 14
script/sql/postgres/postgres_ry_vue_4.X.sql

@@ -951,17 +951,3 @@ insert into sys_oss_config values (1, 'minio',  'ruoyi',            'ruoyi123',
 insert into sys_oss_config values (2, 'qiniu',  'XXXXXXXXXXXXXXX',  'XXXXXXXXXXXXXXX', 'ruoyi',             '', 'http://XXX.XXXX.com',                  'N', 'z0',          '1', '', 'admin', now(), 'admin', now(), null);
 insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX',  'XXXXXXXXXXXXXXX', 'ruoyi',             '', 'http://oss-cn-beijing.aliyuncs.com',   'N', '',            '1', '', 'admin', now(), 'admin', now(), null);
 insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX',  'XXXXXXXXXXXXXXX', 'ruoyi-1250000000',  '', 'http://cos.ap-beijing.myqcloud.com',   'N', 'ap-beijing',  '1', '', 'admin', now(), 'admin', now(), null);
-
--- ----------------------------
--- 函数 ,代替mysql的find_in_set
--- 例如: select * from sys_dept where FIND_IN_SET (101,ancestors) <> 0
--- ----------------------------
-create or replace function find_in_set(arg1 int8, arg2 varchar)
-returns int8 as $body$
-declare pos int8;
-begin
-select position(','||arg1||',' IN ','||arg2||',') into pos;
-return pos;
-end;
-$body$
-language plpgsql