——陈独秀 分享一下:org.springframework.boot.convert.Delimiter的用法 /* * Copyright 2012-2019 the original author ** * Declares a field or method parameter should be converted to collection using the * specified delimiter { /** * A delimiter value used to indicate that no delimiter is required and the result * should be a single element containing the entire string. */ String NONE = ""; /** * The delimiter to * @return the delimiter */ String value(); } 配置文件:application.properties server.port=8172 app.items
目录 一、idea mybatis错误信息 二、解决方法 三、效果 一、idea mybatis错误信息 <statement> or DELIMITER expected, got ‘id’
编写mybatis生成的xml文件时,发现sql节点内报错。 这是IDEA的bug,发生在MyBatis的Mapper的XML文件的sql节点上,第一个字段是什么错误中最后一个单引号内部就是什么。
有不少这样的情况,前端会传筛选条件,给到后端的时候是个 conditionStr ,如果您用的是 mybatis-plus 的 API 那么直接 split 一下就可以使用,如果不是,那就需要将其转换成 inStr ,下面举例说明。
{record_delimiter} ("entity"{tuple_delimiter}"Taylor"{tuple_delimiter}"person"{tuple_delimiter}"Taylor {record_delimiter} ("entity"{tuple_delimiter}"Jordan"{tuple_delimiter}"person"{tuple_delimiter}"Jordan {record_delimiter} ("entity"{tuple_delimiter}"Cruz"{tuple_delimiter}"person"{tuple_delimiter}"Cruz is {tuple_delimiter}7){record_delimiter} ("relationship"{tuple_delimiter}"Alex"{tuple_delimiter}"Jordan" {tuple_delimiter}8){record_delimiter} ("relationship"{tuple_delimiter}"Jordan"{tuple_delimiter}"Cruz"
2.问题复现 1.创建Hive表test_hive_delimiter,使用“\u001B”分隔符 create external table test_hive_delimiter ( id int --hive-table test_hive_delimiter 数据抽取成功: [root@ip-172-31-6-148 ~]# hadoop fs -ls /fayson/test_hive_delimiter | test_hive_delimiter.name | test_hive_delimiter.address | +-------------------------+----------- > show create table test_hive_delimiter; ... | test_hive_delimiter.name | test_hive_delimiter.address | +-------------------------+-----------
1、具体函数: # 函数:func_split_TotalLength DELIMITER $$ DROP function IF EXISTS `func_split_TotalLength` $ $ CREATE DEFINER=`root`@`%` FUNCTION `func_split_TotalLength` (f_string varchar(1000),f_delimiter varchar ,''))); END$$ DELIMITER; # 函数:func_split DELIMITER $$ DROP function IF EXISTS `func_split` $$ CREATE DEFINER=`root`@`%` FUNCTION `func_split` (f_string varchar(1000),f_delimiter varchar(5),f_order int ,f_order)),f_delimiter,1)); return result; END$$ DELIMITER; # 存储过程:splitString DELIMITER
GLOBAL log_bin_trust_function_creators=1; 关闭则是:SET GLOBAL log_bin_trust_function_creators=0; 2、自定义函数: delimiter $$; 这个函数是合并两个字符串 delimiter $$; DROP FUNCTION IF EXISTS addMaterialName $$; CREATE FUNCTION addMaterialName — —————————- — Function structure for caseChoose — —————————- DROP FUNCTION IF EXISTS `caseChoose`; DELIMITER ; — —————————- — Function structure for forNum — —————————- DROP FUNCTION IF EXISTS `forNum`; DELIMITER ; — —————————- — Function structure for ifNum — —————————- DROP FUNCTION IF EXISTS `ifNum`; DELIMITER
,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能; 函数的普遍特性:模块化,封装,代码复用; 速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤; 格式 delimiter begin sql语句 end 自定义的结束符号 delimiter ; delimiter $$ create procedure proc02() $$ create procedure proc04() begin set @var_name01 = 'ZS'; end $$ delimiter; call proc04() ; -- 封装有参数的存储过程,传入员工编号,查找员工信息 delimiter $$ create procedure dec_param01 (in param_empno varchar (20)) begin select * from emp where empno = param_empno; end $$ delimiter ; call dec_param01('1001');
-- mysql存储过程 delimiter $$ CREATE PROCEDURE proc01 () BEGIN SELECT emp_name, emp_salary FROM emp; END $$ delimiter;-- 调用存储过程 CALL proc01 ();-- 很类似调用函数(实际上就是将sql封装为函数) -- 使用变量 delimiter $$ create procedure prooc02() begin declare var_name01 varchar(20) default 'aaa'; -- 声明变量(局部变量) set var_name01 = '张三'; -- 给变量赋值 select var_name01; -- 输出变量的值 end $$ delimiter ; call prooc02 $$ create procedure proc04() begin set @var_name01 = '北京'; select @var_name01; end $$ delimiter; call
SPLIT语法图SPLIT函数将expr表示的字符串按照指定的分割符delimiter分割为若干个子字符串,返回第n个子字符串。 delimiter分割符,delimiter为与expr相同的通用表达式,须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。 当delimiter的值为NULL时,函数返回NULL。当delimiter为CHAR类型时,若为非空格串,系统截断其尾部空格。当delimiter为CHAR类型时为空格串,系统截断并保留一个空格。 delimiter分割符,delimiter为与expr相同的通用表达式,须为字符型,或除JSON、LOB、XMLTYPE类型外可转化为字符型的其他类型。 当delimiter的值为NULL时,函数返回NULL。当delimiter为CHAR类型时,若为非空格串,系统截断其尾部空格。当delimiter为CHAR类型时为空格串,系统截断并保留一个空格。
MySQL 8: drop procedure if exists sp_split; delimiter // create procedure sp_split(p_str text, p_delimiter varchar(100)) begin select substring_index(substring_index(p_str, p_delimiter, lv), p_delimiter, , ''))) / (char_length(p_delimiter)) + 1) select * from tab1 ) t1; end; // delimiter ; MySQL 5: drop procedure if exists sp_split; delimiter // create procedure sp_split(p_str text, p_delimiter char_length(replace(p_str, p_delimiter, ''))) / (char_length(p_delimiter)) + 1; end; // delimiter ;
Use {record_delimiter} as the list delimiter.4.When finished, output {completion_delimiter}-Examples- }GOVERNMENT AGENCY B{tuple_delimiter}ANTI-COMPETITIVE PRACTICES{tuple_delimiter}TRUE{tuple_delimiter} }GOVERNMENT AGENCY B{tuple_delimiter}ANTI-COMPETITIVE PRACTICES{tuple_delimiter}TRUE{tuple_delimiter} {record_delimiter} (PERSON C{tuple_delimiter}NONE{tuple_delimiter}CORRUPTION{tuple_delimiter}SUSPECTED {tuple_delimiter}2015-01-01T00:00:00{tuple_delimiter}2015-12-30T00:00:00{tuple_delimiter}Person C was
语句序列1; elseif(条件) then 语句序列2; else 语句序列; end if; 每个语句序列后面都要加分号; if elseif else endif endif 后面也要加分号 */ delimiter ; call p_sum(); delimiter $$ create procedure p_sum(); begin declare real_sum int default 0; -- 参数:参数名 类型 -- 带参数的存储过程 delimiter $$ create procedure insert_department( p_dno char(2), p_dname ; call delete_department('D5'); -- 带输出参数的存储过程 -- mysql存储过程参数如果不指定in,out,inout,则默认为in delimiter $$ (avg(score),2) from sc where sno = f_sno); end $$ delimiter ; drop function if exists get_avgscore;
& gap &"NOX2(ppm)" & delimiter & gap & "NOX3(ppm)" & delimiter & gap& "NOX4(ppm)" & delimiter & gap & "NOX5(ppm)" & delimiter & gap & "flow1(Kg/h)" & delimiter & gap & "flow2(Kg/h)" & delimiter & gap fo.LinePrint(Now & delimiter & gap & SmartTags("gas_NOX1")& delimiter & gap & SmartTags("gas_NOX2") & delimiter & gap & SmartTags("gas_NOX3") & delimiter & gap & SmartTags("gas_NOX4") & delimiter & gap & SmartTags("gas_NOX5") & delimiter & gap & SmartTags("flow1") & delimiter & gap & SmartTags("flow2"
) A = importdata(filename, delimiter, nheaderlines) [A, delimiter] = importdata(…) [A, delimiter, A = importdata(filename, delimiter) interprets delimiter as the column separator in ASCII file filename A = importdata(filename, delimiter, nheaderlines) loads data from ASCII file filename, reading numeric [A, delimiter] = importdata(…) returns the detected delimiter character for the input ASCII file. [A, delimiter, nheaderlines] = importdata(…) returns the detected number of header lines in the input
,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能; 函数的普遍特性:模块化,封装,代码复用; 速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤; 格式 delimiter begin sql语句 end 自定义的结束符号 delimiter ; delimiter $$ create procedure proc02() $$ create procedure proc04() begin set @var_name01 = 'ZS'; end $$ delimiter; call proc04() ; -- 封装有参数的存储过程,传入员工编号,查找员工信息 delimiter $$ create procedure dec_param01 (in param_empno varchar (20)) begin select * from emp where empno = param_empno; end $$ delimiter ; call dec_param01('1001');
$ create procedure pro_test2() begin declare num int default 5; select num+ 10; end$ delimiter ; # SET DELIMITER $ CREATE PROCEDURE pro_test3() BEGIN DECLARE NAME VARCHAR(20); SET NAME = 'MYSQL'; SELECT NAME ; END$ DELIMITER ; #也可以通过select ... into 方式进行赋值操作 : DELIMITER $ CREATE PROCEDURE pro_test5() BEGIN declare countnum int; select count(*) into countnum from city; select countnum; END$ DELIMITER ; #if ; #创建 update 型触发器,完成更新数据时的日志记录 : DELIMITER $ create trigger emp_logs_update_trigger after update on
(也就是原来';'的作用) delimiter $ create procedure pro_test1() begin select 'hello mysql'; end$ delimiter ; 示例: delimiter $ create procedure procedure_test01() begin declare name varchar(20); set name = 'mysql '; select name; end$ delimiter ; 也可以通过select…into方式进行赋值操作; delimiter $ create procedure procedure_test02 () begin declare num int default 0; select count(*) into num from stu; select num; end$ delimiter ; -- 有输入,有输出 delimiter $ create procedure procedure_test05(in hight int,out description varchar(10))
) { this(delimiter, "", ""); } public StringJoiner(CharSequence delimiter, delimiter:这是一个私有字段,表示拼接字符串时使用的分隔符。同样,它在构造函数中通过参数传递,如果未提供则默认为空字符串。 suffix:这是一个私有字段,表示拼接后的字符串的后缀部分。 构造函数详解: StringJoiner(CharSequence delimiter) 这个构造函数接受一个CharSequence类型的参数delimiter,它表示拼接字符串时要使用的分隔符。 类型的参数,分别是分隔符delimiter、前缀prefix和后缀suffix。 , String> joining(CharSequence delimiter) { return joining(delimiter, "", ""); } public static