首页
归档
友链
关于
Search
1
十年之约RSS聚合订阅服务上线
1,880 阅读
2
网易云音乐黑胶会员月月免费赠送
1,786 阅读
3
工资发放日的区别
1,351 阅读
4
Apple M1 使用nvm管理并安装Nodejs
1,079 阅读
5
rsyslogd内存占用过高解决方案
1,064 阅读
零碎
标本
码海
工具
其他
登录
Search
标签搜索
摄影
北京
旅行
Java
学习笔记
Linux
生活
教程
SpringBoot
软件
服务器
Windows
系统
Spring
福利
服务
十堰
南阳
日记
SQL
萧瑟
累计撰写
138
篇文章
累计收到
691
条评论
首页
栏目
零碎
标本
码海
工具
其他
页面
归档
友链
关于
搜索到
4
篇与
SQL
的结果
2022-12-22
Java mybatis中#和$的区别
在mybatis中#和$的主要区别是:#传入的参数在SQL中显示为字符串,$传入的参数在SqL中直接显示为传入的值. #方式能够很大程度防止sql注入,$方式无法防止Sql注入; 1、传入的参数在SQL中显示不同#传入的参数在SQL中显示为字符串(当成一个字符串),会对自动传入的数据加一个双引号。例:使用以下SQLselect id,name,age from student where id =#{id} 当我们传递的参数id为 "1" 时,上述 sql 的解析为: select id,name,age from student where id ="1"$传入的参数在SqL中直接显示为传入的值例:使用以下SQLselect id,name,age from student where id =${id} 当我们传递的参数id为 "1" 时,上述 sql 的解析为: select id,name,age from student where id =12、#可以防止SQL注入的风险(语句的拼接);但$无法防止Sql注入。3、$方式一般用于传入数据库对象,例如传入表名。4、大多数情况下还是经常使用#,一般能用#的就别用$;但有些情况下必须使用$,例:MyBatis排序时使用 order by 动态参数时需要注意,用$而不是#。
2022年12月22日
18 阅读
0 评论
2022-08-07
Oracle定义DES加密解密及MD5加密函数
最近在研究公司的中台,通过 数据库服务化 提供接口对外使用,部分敏感数据需要加密,且根据密文可解密,这让我就发现了数据库加密函数,现在分享给大家。DES加密函数create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is v_text varchar2(4000); v_enc varchar2(4000); raw_input RAW(128) ; key_input RAW(128) ; decrypted_raw RAW(2048); begin v_text := rpad( p_text, (trunc(length(p_text)/8)+1)*8, chr(0)); raw_input := UTL_RAW.CAST_TO_RAW(v_text); key_input := UTL_RAW.CAST_TO_RAW(p_key); dbms_obfuscation_toolkit.DESEncrypt(input => raw_input,key => key_input,encrypted_data =>decrypted_raw); v_enc := rawtohex(decrypted_raw); dbms_output.put_line(v_enc); return v_enc; end;DES解密函数create or replace function decrypt_des(p_text varchar2,p_key varchar2) return varchar2 is v_text varchar2(2000); begin dbms_obfuscation_toolkit.DESDECRYPT(input_string => UTL_RAW.CAST_TO_varchar2(p_text),key_string =>p_key, decrypted_string=> v_text); v_text := rtrim(v_text,chr(0)); dbms_output.put_line(v_text); return v_text; end;MD5加密函数CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32); BEGIN retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ; RETURN retval; END;函数使用示例DES加密:select encrypt_des('', '密文');DES解密:select decrypt_des('', '密文')MD5加密:md5('');结尾语此函数未对null和空数据进行判断,可能会出现错误,请自行调整业务需求
2022年08月07日
163 阅读
4 评论
2022-05-02
Oracle trunc()函数
功能描述用于截取时间或者数值,返回指定的值。语法(1)日期处理:TRUNC(date,[fmt]) -- date 为必要参数,是输入的一个date日期值 -- fmt 参数可忽略,是日期格式,缺省时表示指定日期的0点。(2)数值处理:TRUNC(number,[decimals]) -- number 为必要参数,是输入的一个number数值 -- decimals 参数可忽略,是要截取的位数,缺省时表示截掉小数点后边的值。例子(1)处理日期:--sysdate和trunc(sysdate)是不一样的 sysdate在当天的零时零分零秒等于trunc(sysdate) select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss') from dual t; --年 select trunc(sysdate, 'yy') "当年第一天" from dual; select trunc(sysdate, 'yyyy') "当年第一天" from dual; select trunc(sysdate, 'year') "当年第一天" from dual; --季度 select trunc(sysdate, 'q') "当前季度的第一天" from dual; select trunc(add_months(sysdate,3), 'Q') -1/24 "这个季度最后一天23点" from dual; --月 select trunc(sysdate, 'mm') "当月第一天" from dual; select trunc(sysdate, 'month') "当月第一天" from dual; select trunc(last_day(sysdate)+1) "下个月第一天的0点" from dual; --周 select trunc(sysdate, 'd') "本周的第一天,周日起" from dual; select trunc(sysdate,'day') "本周的第一天,周日起" from dual; select next_day(TRUNC(SYSDATE ), 'TUESDAY' ) + 12/24 "下个星期二中午12点" from dual; select TRUNC(LEAST(NEXT_DAY(SYSDATE, 'SATURDAY'), NEXT_DAY(SYSDATE, 'SUNDAY'))) + (6*60+10)/(24*60) "下个周六日早上6点10分" from dual; --天 select trunc(sysdate+1) "今晚12点" from dual; select trunc(sysdate+1) + (8*60+30)/(24*60) "明天早上8点30分" from dual; --时 select trunc(sysdate, 'hh')"当前小时" from dual; select trunc(sysdate, 'hh24') "当前小时" from dual; --分 select trunc(sysdate, 'mi') "当前分钟" from dual; select trunc(sysdate,'mi') + 10/ (24*60) "10分钟后的时间"from dual; --秒 select sysdate + 10/(24 * 60 * 60) "10秒钟后" from dual;--trunc没有精确到秒的精度(2)处理数值:--123.56,将小数点右边指定位数后面的截去; select trunc(123.567,2) from dual; --100,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记; select trunc(123.567,-2) from dual; --123,默认截去小数点后面的部分; select trunc(123.567) from dual;
2022年05月02日
100 阅读
6 评论
2022-03-31
Oracle数据库异常ORA-00909:参数个数无效
今天在工作过程中遇到一个问题,模糊查询后台拼接的时候报错,错误异常为:ORA-00909:参数个数无效,简单分析了一下代码,问题可能出现在模糊查询拼凑SQL的时候。而常规在MySql中无异常,Oracle中会出现此问题。问题代码DATA_TABLE_NAME LIKE CONCAT('%',#{tableName},'%')解决示例DATA_TABLE_NAME LIKE CONCAT(CONCAT('%',#{tableName}),'%')问题原因在Oracle中CONCAT函数每次只能进行两个字符串的拼接,两个以上就会报错.
2022年03月31日
225 阅读
1 评论