原因:grep如果碰到\000 NUL字符,就会认为文件是二进制文件,而 grep 匹配 默认忽略二进制数据。
所以要使用grep -a属性:不忽略二进制的数据。
grep的-a或–text参数功能:将 binary 文件以 text 文件的方式搜寻数据
解决办法:
1 | grep -a file_name |
原因:grep如果碰到\000 NUL字符,就会认为文件是二进制文件,而 grep 匹配 默认忽略二进制数据。
所以要使用grep -a属性:不忽略二进制的数据。
grep的-a或–text参数功能:将 binary 文件以 text 文件的方式搜寻数据
解决办法:
1 | grep -a file_name |
在SQl like语句中,比如
1 | SELECT * FROM user WHERE username LIKE '%luchi%' |
但当like 所要查询的字段中含有 % ,我们如何去查?
这个时候就需要指明 字段中的那个’%‘ 不作为通配符,这里就需要用到 ESCAPE 转义
测试:
1 | SELECT * FROM user WHERE username LIKE '%%%'; |
这里会发现三个%号都被当做通配符了;
解决办法:
1 | SELECT * FROM user WHERE username LIKE '%1%%' ESCAPE '1'; |
备注:like放在where条件还能这样用,如果是在select中这样是不好使的,建议使用regexp
INSERT ON DUPLICATE KEY UPDATE
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE
注意:
如:原有数据表中的索引:UNIQUE KEY
uk_admin_name(
admin_name) USING BTREE
UNIQUE KEY
uk_password(
password) USING BTREE
执行:
1 | insert into tab_admin(`admin_name`, `password`) value('admin', 'admin888') on duplicate key |
从上图可以看出:虽然admin,admin888和两行都匹配上了,但是只更新了一行数据,受影响的行: 2
至于为啥优先选择更新:admin_name这个唯一键? 原因:他会按照键的顺序来更新
Hive版本为 apache-hive-0.13.1
这几个分析函数通常用于OLAP中,不能累加,而且需要根据不同维度上钻和下钻的指标统计,比如,分小时、天、月的UV数。
数据准备:
1 | CREATE EXTERNAL TABLE lxw1234 ( |
Hive版本为 apache-hive-0.13.1
备注: 这几个函数不支持WINDOW子句。
数据准备:
1 | CREATE EXTERNAL TABLE lxw1234 ( |
Hive版本为 apache-hive-0.13.1
注意: 序列函数不支持WINDOW子句。(什么是WINDOW子句,点此查看前面的文章 )
数据准备:
1 | CREATE EXTERNAL TABLE lxw1234 ( |