MySQL 的hex 和 unhex 函数类似于KingbaseES 的encode 和 decoding,实现字符与16进制之间的转换。

一、先看MySQL例子

mysql> select hex('kingbase');
+------------------+
| hex('kingbase') |
+------------------+
| 6B696E6762617365 |
+------------------+
1 row in set (0.00 sec) mysql> select unhex(hex('kingbase'));
+------------------------+
| unhex(hex('kingbase')) |
+------------------------+
| kingbase |
+------------------------+
1 row in set (0.00 sec)

二、再看KingbaseES

test=# set bytea_output='escape';
SET
test=# select encode('kingbase','hex');
encode
------------------
6b696e6762617365
(1 row) test=# select decoding(encode('kingbase','hex'),'hex');
decoding
----------
kingbase
(1 row)

三、包装hex/unhex 函数

create function hex(text) returns text immutable strict as $$
select encode($1::bytea, 'hex')
$$
language sql; create function hex(bytea) returns text immutable strict as $$
select encode($1, 'hex')
$$
language sql; create function unhex(text) returns text immutable strict as $$
select encode(decoding($1, 'hex'),'escape')
$$
language sql; create function unhex(bytea) returns text immutable strict as $$
select encode(decoding($1, 'hex'),'escape')
$$
language sql;

四、加解密函数包装

首先创建扩展:create extension kbcrypto;

create function AES_ENCRYPT(data TEXT,key TEXT) returns BYTEA immutable strict as $$
select encrypt($1::BYTEA,$2::BYTEA,'aes-ecb/pad:pkcs')
$$
language sql ; create function AES_DECRYPT(data text,key TEXT) returns BYTEA immutable strict as $$
select decrypt($1::BYTEA,$2::BYTEA,'aes-ecb/pad:pkcs')
$$
language sql;

五、使用例子

test=# select hex('kingbase');
hex
------------------
6b696e6762617365
(1 row) test=# select unhex(hex('kingbase'));
unhex
----------
kingbase
(1 row) test=# select AES_ENCRYPT('kingbase','123');
aes_encrypt
------------------------------------
\x98986cf7143047f1463f2170a49feb02
(1 row) test=# set bytea_output='escape';
SET
test=# select AES_DECRYPT(AES_ENCRYPT('kingbase','123'),'123');
aes_decrypt
-------------
kingbase
(1 row)

KingbaseES 实现MYSQL hex/unhex 函数的更多相关文章

  1. mysql中用HEX和UNHEX函数处理二进制数据的导入导出

    读取数据并拼写sql语句,然后进行导入.具体方法为: (1)导出时采用HEX函数读取数据,把二进制的数据转为16进制的字符串: select HEX(binField) from testTable; ...

  2. MySQL(5.6) 函数

    字符串函数 ASCII(str) 说明:返回字符串 str 最左边字符的 ASCII 值 mysql'); mysql); mysql> SELECT ASCII('a'); mysql> ...

  3. mysql 内置函数大全 mysql内置函数大全

    mysql 内置函数大全 2013年01月15日 19:02:03 阅读数:4698 对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代 ...

  4. mysql内置函数大全

    mysql 字符串函数用法集合 ASCII(str)返回字符串str的最左面字符的ASCII代码值. mysql> select ascii('d'); +------------+ | asc ...

  5. MySQL中字符串函数详细介绍

    MySQL字符串函数对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str)返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL,返回N ...

  6. thinkphp中的内置操作数据库与mysql中的函数汇总

    8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...

  7. mysql的字符串函数

    From: http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/12/13/1904330.html 对于针对字符串位置的操作,第一个位置被标 ...

  8. MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法

    在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...

  9. Mysql - 存储过程/自定义函数

    在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

随机推荐

  1. 一次 MySQL 误操作导致的事故,「高可用」都顶不住了!

    这是悟空的第 152 篇原创文章 官网:www.passjava.cn 你好,我是悟空. 上次我们项目不是把 MySQL 高可用部署好了么,MySQL 双主模式 + Keepalived,来保证高可用 ...

  2. ansible管理windows主机

    1. 在windows开启winrm winrm service 默认都是未启用的状态,先查看状态:如无返回信息,则是没有启动: winrm enumerate winrm/config/listen ...

  3. jQuery获取市、区县、乡镇、村

    效果图: 首先根据自己方法把地区树状结构json字符串拿到 html下拉框和js写法如下: <select class="form-control" style=" ...

  4. Java去除字符串中 除数字和逗号以外的符号

    例: public static void main(String[] args) { // 去除字符串中 除数字和逗号以外的符号 String str = "_1066,_1068,_10 ...

  5. IDEA快速创建maven项目

    遇到问题不要急,不要怕. 一.  二. 三.  四.Finish进来之后,项目会加载一会,之后会是下面这样子.  五.继续往下面配置,建立java和resorces文件夹  六.下面配置tomcat服 ...

  6. Tomcat深入浅出——Servlet(二)

    一.Servlet简介 Servlet类最终开发步骤: 第一步:编写一个Servlet类,直接继承HttpServlet 第二步:重写doGet方法或者doPost方法,重写哪个我说的算! 第三步:将 ...

  7. CSS进阶内容—盒子和阴影详解

    CSS进阶内容 在学习了CSS基本知识之后,我们需要进一步了解CSS,因此写下了这篇文章 当然如果没有学习之前的知识,可以到我的主页中查看之前的文章:秋落雨微凉 - 博客园 CSS三大特性 首先我们先 ...

  8. NGINX屏蔽垃圾爬虫

    if ($http_user_agent ~* (80legs.com|Abonti|AcoonBot|Acunetix|adbeat_bot|AddThis.com|adidxbot|ADmantX ...

  9. MySQL--用通配符进行过滤(LIKE操作符)

    1.LIKE操作符 怎样搜索产品名中包含文本anvil的所有产品?用简单的比较操作符肯定不行,必须使用通配符.利用通配符可创建比较特定数据的搜索模式.在这个例子中,如果你想找出名称包含anvil的所有 ...

  10. can板间通信代码学习

    一.板间通信 板间通信是底盘与上下云台之间的通信 A型板和两个C型板 主要可以分成两个方面,一是哨兵的模式选择和遥控器数据的解码:二是对于CAN发送和接收数据的处理. 二.CAN的板间通信相关函数 c ...