impala查询转义问题

2023-11-12

select REGEXP_REPLACE('佰分贰拾(深圳)品牌管理有限公司', '\\(', '(')

然后

SELECT  vendor_full_name,REGEXP_REPLACE(vendor_full_name, '\\(', '(') 
FROM odsmdmdata.sms_vendor_party_t

报错,这就日了狗了 仔细看报错日志 我就两个\\ 怎么就被转义成4个\\了

所以我只用一个\就好

SELECT  vendor_full_name,REGEXP_REPLACE(vendor_full_name, '\(', '(') 
FROM odsmdmdata.sms_vendor_party_t
where  sms_vendor_id ='40539';

 

接着研究下 REGEXP_REPLACE 函数

Impala String Functions | 5.9.x | Cloudera Documentationicon-default.png?t=M276https://docs.cloudera.com/documentation/enterprise/5-9-x/topics/impala_string_functions.html

[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 
regexp_replace('aaabbbaaa','(b+)','<\\1>'),
regexp_replace('aaabbbaaa','b+','<\\1>'), --验证必须有()
regexp_replace('aaabbbaaa','(b+)','【\\1】'),--验证<>可以随意替换
regexp_replace('aaabbbaaa','a(b+)','【\\1】')--验证只有括号里的才有用

[localhost:21000] > select regexp_replace('123-456-789','[^[:digit:]]','');
+---------------------------------------------------+
| regexp_replace('123-456-789', '[^[:digit:]]', '') |
+---------------------------------------------------+
| 123456789                                         |
+---------------------------------------------------+

[[:digit:]]代表数字,这种写法是为了避免转义字符, ^是非的意思

验证

select regexp_replace('123-456-789','[^\\d+]',''), 
regexp_replace('123-456-789','[[:digit:]]','') 

 

以上3个demo都很简单,但是我网上查到一个突然就有点懵了

SELECT REGEXP_REPLACE('(jackie)&|(jackie chan)', '\\(|\\)|(|)', ' ') 

乍一看好像很复杂。。

实际上还好。

\\(|\\)|(|)' 其实可以看作 \\(  |   \\)   |  (|) 也就是\\( = ( ,\\)=) ,|=或的意思 ,(|)这个是啥呢?经过我测试(|)=()=两个字符中间没有空的那个没空,验证如下

SELECT REGEXP_REPLACE('(jackie)&|(jackie chan)', '\\(|\\)|(|)', ' ') ,
REGEXP_REPLACE('(jackie)&|(jackie chan)', '\\(|\\)|()', ' ') ,--这个为了说明(|)=()
REGEXP_REPLACE('(jackie)&|(jackie chan)', '\\(|\\)', ' ') ,--这个为了说明这个正则就是匹配()把它替换空格
REGEXP_REPLACE('(jackie)&|(jackie chan)', '()', '-') -- 这个为了说明()=无空

——————————————————————————————————————————

顺道学习点函数

split_part

select 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                                     |
+-------------------------------------------+

translate

select translate ('hello world','world','earth');

+--------------------------------------------+
| translate('hello world', 'world', 'earth') |
+--------------------------------------------+
| hetta earth                                    |
+--------------------------------------------+

我有另外一篇文章专门解释translate 暂不说了。

说下其他的 中文乱码, 但是replace 是可以的。暂无解决办法

 --未完待续

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

impala查询转义问题 的相关文章

随机推荐

  • pandas 数据类型之 DataFrame

    Python 官网 https www python org 这里 才 python 前沿 可惜是英文原版 所以 我要练习英文阅读 我的CSDN主页 My Python 学习个人备忘录 我的HOT博 老齐教室 自学并不是什么神秘的东西 一个
  • 初涉Rx套餐 之RxBinding(让你的事件流程更清晰)

    转载请注明出处 王亟亟的大牛之路 最近下班回家都在WOW 周末就爆肝 感觉人都要GO DIE了 昨天下午看了看RxBinding相关的功能感觉还是蛮强大的 所提供的API也是相当丰富 基本Rx套餐都是互通的 然后就把之前的Rx例子翻出来重新
  • AE与AO的区别

    在ArcGis9 0之前 ArcObject还不是一个独立的产品 一直捆绑在Desktop产品中 只要你购买了desktop产品中的一个 你就可以使用arcboject开发 从ArcGis9 0开始 ESRI公司推出了ArcGis Engi
  • web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

    一 什么是web自动化测试 Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作 通过编写脚本来自动化执行测试用例 以验证Web应用程序的功能 性能和兼容性等方面的质量 其主要目的是降低测试成本和时间 并提高测试效率和准确性
  • 使用selenium启动谷歌Chrome浏览器

    1 首先pip安装selenium pip install selenium 2 下载chromedriver驱动 1 打开自己电脑上的谷歌浏览器 查看版本号 然后chromedriver的版本一定要与Chrome的版本一致 不然下载不对应
  • 格式化并挂载ubi文件系统过程详解

    1 UBI文件系统介绍 1 UBI文件系统是基于MTD子系统的 内核必须要先支持MTD子系统 2 UBI文件系统适用于Nand flash 是可读写的文件系统 2 内核中使能UBI 2 1 使能UBI设备驱动 Location
  • 小问题解决方案

    目录 error CS0246 未能找到类型或命名空间名称 DllImport 是否缺少 using 指令或程序集引用 其他信息 对 PInvoke 函数 useQtDllTest1 useQtDllTest1 Form1 screenSh
  • oracle用户权限

    oracle用户权限 sys 数据库超级用户 必须以sysdba的身份进行登录的 1 创建新用户 create user user name identified by password default tablespace tablesp
  • ChatGPT调研报告:发展到今天这一步,哪个职业最慌?

    ChatGPT的流行 让AIGC受到了空前的关注 AIGC 即 AI Generated Content 是指利用人工智能技术来生成内容 比如AI写作 AI绘画 AI编程 AI语音合成等 就在3月29日 一封来自美国研究机构Future o
  • zabbix 调用api 批量删除主机

    脚本名称 zabbix api py 脚本内容如下 usr bin env python coding utf 8 import json import sys import urllib2 import argparse from url
  • TypeScript中any、unknown、never和void有什么区别?

    any 任意类型的变量 unknown 表示未知类型 unknown与any类似 但使用前必须进行断言或守卫 never 永不存在的值的类型 void 无任何类型 没有类型 用于函数时 never表示函数用于执行不到返回值那一步 抛出异常或
  • 植物图像识别python_python实现图像识别功能

    本文实例为大家分享了python实现图像识别的具体代码 供大家参考 具体内容如下 usr bin env python from PIL import Image import pytesseract url img denggao jpe
  • 什么是IDS?

    1 什么是IDS IDS是 入侵检测系统 intrusion detection system 简称 IDS 是一种对网络传输进行即时监视 在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备 它与其他网络安全设备的不同之处便在于 I
  • Swagger-使用教程(详细)

    Swagger Swagger官网 https swagger io Swagger是一款 RESTful 风格的 Web 服务框架 那么问题来了 什么是RESTful RESTFUL是一种网络应用程序的设计风格和开发方式 基于HTTP 可
  • ComSec HW6 Hash

    11 1 安全 Hash 函数需要具有那些特性 H能用于任何大小的数据分组 H产生定长输出 对任意给定的x H x 要相对易于计算 使得软硬件实现都实际可行 单向性 对任意给定的码y 寻求x使得H x y在计算上不可行 弱抗碰撞性 任意给定
  • Flink学习笔记(3)——Flink部署

    目录 一 Flink 部署 1 1 快速启动一个集群 1 1 1 环境配置 1 1 2 集群启动 1 1 3 向集群提交作业 1 2 部署模式 1 2 1 会话模式 1 2 2 单作业模式 Per Job Mode 1 2 3 应用模式 A
  • 什么是FPGA?为什么FPGA会如此重要?

    CPU GPU FPGA三者能力相加就是芯片的未来 很多粉丝问我 嵌入式方向中的FPGA怎么样 收入如何 前言 这个时候 一定会有抬杠青年说 我见过国内生产的FPGA芯片 还用过呢 通常遇到这一类质疑声 我一般都会说 你是对的 后来 要知道
  • Ubuntu firefox 上无法联网

    问题描述1 firefox 登录百度失败 解决方案 打开Firefox 点击右上角三条杠 进入 选项 点击 高级 切换到 网络 点击 连接设置 设置为 不使用代理 即可 如果还没能解决问题 请接着往下看 尝试ping www baidu c
  • Linux第三周作业

    Linux第三周作业 第三周作业 一 基础班 1 显示 etc目录下 以非字母开头 后面跟了一个字母以及其它任意长度任意字符的文件或目录 2 复制 etc目录下所有以p开头 以非数字结尾的文件或目录到 tmp mytest1目录中 3 将
  • impala查询转义问题

    select REGEXP REPLACE 佰分贰拾 深圳 品牌管理有限公司 然后 SELECT vendor full name REGEXP REPLACE vendor full name FROM odsmdmdata sms ve