| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> impala查询转义问题 -> 正文阅读 |
|
[大数据]impala查询转义问题 |
select REGEXP_REPLACE('佰分贰拾(深圳)品牌管理有限公司', '\\(', '(') 然后 SELECT ?vendor_full_name,REGEXP_REPLACE(vendor_full_name, '\\(', '(')? 报错,这就日了狗了 仔细看报错日志 我就两个\\ 怎么就被转义成4个\\了 所以我只用一个\就好 SELECT ?vendor_full_name,REGEXP_REPLACE(vendor_full_name, '\(', '(')? ? 接着研究下?REGEXP_REPLACE 函数 [localhost:21000] > select regexp_replace('aaabbbaaa','b+','xyz'); +------------------------------------------+ | regexp_replace('aaabbbaaa', 'b+', 'xyz') | +------------------------------------------+ | aaaxyzaaa | +------------------------------------------+ Returned 1 row(s) in 0.11s ?这里好理解 b+只得是1个b或者多个b 这里匹配到了bbb 所以bbb替换到xyz ,so easy [localhost:21000] > select regexp_replace('aaabbbaaa','(b+)','<\\1>'); +----------------------------------------------+ | regexp_replace('aaabbbaaa', '(b+)', '<\\1>') | +----------------------------------------------+ | aaa<bbb>aaa | +----------------------------------------------+ Returned 1 row(s) in 0.11s 这里(b+) 指的是 bbb这三个整体 注意这个括号不能省略, <\\1>中的\\就是上文bbb? ,<>就是包围 select? [localhost:21000] > select regexp_replace('123-456-789','[^[:digit:]]',''); +---------------------------------------------------+ | regexp_replace('123-456-789', '[^[:digit:]]', '') | +---------------------------------------------------+ | 123456789 | +---------------------------------------------------+ [[:digit:]]代表数字,这种写法是为了避免转义字符, ^是非的意思 验证 select regexp_replace('123-456-789','[^\\d+]',''),? ? 以上3个demo都很简单,但是我网上查到一个突然就有点懵了 SELECT REGEXP_REPLACE('(jackie)&|(jackie chan)', '\\(|\\)|(|)', ' ')? 乍一看好像很复杂。。 实际上还好。 \\(|\\)|(|)' 其实可以看作?\\(? |? ?\\)? ?|? (|) 也就是\\( = ( ,\\)=) ,|=或的意思 ,(|)这个是啥呢?经过我测试(|)=()=两个字符中间没有空的那个没空,验证如下 SELECT REGEXP_REPLACE('(jackie)&|(jackie chan)', '\\(|\\)|(|)', ' ') , —————————————————————————————————————————— 顺道学习点函数 split_partselect split_part('one***two***three','***',2); +-------------------------------------------+ | split_part('one***two***three', '***', 2) | +-------------------------------------------+ | two | +-------------------------------------------+ select split_part('one\|/two\|/three','\|/',3); +-------------------------------------------+ | split_part('one\|/two\|/three', '\|/', 3) | +-------------------------------------------+ | three | +-------------------------------------------+ translateselect translate ('hello world','world','earth'); +--------------------------------------------+ 我有另外一篇文章专门解释translate 暂不说了。 说下其他的 中文乱码, 但是replace?是可以的。暂无解决办法 ?--未完待续 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:53:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |