问题:身份证、手机号加密存储后如何进行模糊查询?

解决:使用数据库自带的AES_DECRYPT进行加密

方法:

select * 
from t_user 
where AES_DECRYPT(UNHEX(mobile_no_sha),'key') 
like 'xxx%';

select HEX(AES_ENCRYPT('明文1', 'key')), HEX(AES_ENCRYPT('1232424', 'key')), HEX(AES_ENCRYPT('text3', 'aaaa'));

select convert(AES_DECRYPT(UNHEX('9B1A7A1DC71307D779C93ACA5E125FC0'), 'key') USING UTF8MB4), 
    AES_DECRYPT(UNHEX('A1DAD34A097546E873D9064EE448323E'), 'key'), 
    AES_DECRYPT(UNHEX('0AE69DD49328CAB30FBE5066D18149DD'), 'aaaa');

阅读全文

问题:如何解决hive查询排序后,会多出一行全null数据

解决:设置hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;

方法:
在运行语句前运行

set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;

执行MR操作,会先经过hive.input.format,其默认值为CombineHiveInputFormat,其会先将索引文件当成小文件合并,将其当做普通文件处理。更严重的是,这会导致LZO文件无法切片。

问题:shell脚本如何获取二维数组数据?

方法:

方法一

#数组元素以空格分割
sites=("www.a.com www.b.com www.c.com www.d.com" "www.e.cn www.f.cn")
 
n_sites=${#sites[*]}     #获取一维sites的数组长度
for ((i=0;i<$n_sites;i++));
do
  inner_sites=(${sites[$i]}) #将一维sites字符串赋值到数组
  n_inner_sites=${#inner_sites[*]} #获取二维sites的数组长度
  for ((j=0;j<$n_inner_sites;j++));
  do
    echo ${inner_sites[$j]}  #回显site
    #do something
  done
done

阅读全文