gpt4 book ai didi

sql - 在 Hive 中查询时删除 Unicode 字符

转载 作者:可可西里 更新时间:2023-11-01 14:25:13 34 4
gpt4 key购买 nike

我想清理 Hive 表中数据的 unicode。以下是数据,

select ('http://10.0.0.1/���m��v������)�a�^�����kn:4�+9x�2c��m�{��')

我需要的输出是查找我的列中是否有任何 unicode 字符并将其删除。这里的输出应该是,

http://10.0.0.1/

或完全为空。他们中的任何一个都很好。如果某行包含任何 unicode 字符,则完全将其设为 null 即可。

以下是我的尝试,

 select REGEXP_REPLACE('http://10.0.0.1/���m��v������)�a�^�����kn:4�+9x�2c��m�{��', '\\[[:xdigit:]]{4}', '')

 select REGEXP_REPLACE('http://10.0.0.1/���m��v������)�a�^�����kn:4�+9x�2c��m�{��', '[||chr(128)||'-'||chr(255)||]', '')

Executed as Single statement. Failed [40000 : 42000] Error while compiling statement: FAILED: ParseException line 1:193 mismatched input '<EOF>' expecting ) near ')' in function specification
Elapsed time = 00:00:00.220

STATEMENT 1: SELECT Statement failed.

有人可以帮我清理 table 上的这些东西吗?

工作的地方,

select REGEXP_REPLACE('"http://r.rxthdr.com/w?i=s�F�""�HY|�K�>�0����D����W8뤒�O0�Q�D�1��Vc~�j[Q��f��{u�Be�S>n���Ò���&��F9���C�i��8:ڔ�_@ĪO��K?�Ēc�6��=��v[�����D�$%��:�a�40ݩ�&O��K��""�0�a<x��TcX���b��TN�}�x�o��UY$K�I�Օ""��(+�M���E�=K�A�I�A���q#l�(�yt�5��h}��~[��YOA��G�=ïˆï¿½{���. �Q���ح;x=�s�0:�', '(?s).*\\P{ASCII}.*', '')

它不工作的地方,

 select REGEXP_REPLACE('c4k0j,}W""d+2|4y0hkCkRh+.{pq80{?X8O>b<:ph.3!{T', '(?s).*\\P{ASCII}.*', '')

select REGEXP_REPLACE('z|""},}69]6N2|c_;5.su={IU+|8ubq1<r$!Xxy#?Bhkv20:jXNgRh+5fwj:ndfWBJ}e)>','(?s).*\\P{ASCII}.*', '')

图像中的第一个具有 unicode 字符。但是在粘贴时它变成了一个点。

enter image description here

最佳答案

你可以使用

select REGEXP_REPLACE(YOUR_STRING_HERE, '\\P{ASCII}.*', '')

它将从第一个找到的非 ASCII 字符中删除所有字符串,直到它的末尾。

Hive 正则表达式支持 Unicode 属性类,\p{ASCII} 匹配任何 ASCII 字符。相反的 Unicode 属性类是通过将 p 转为大写而形成的。因此,\P{ASCII} 匹配任何非 ASCII 的字符。 .* 尽可能多地匹配任何 0+ 个字符,因为 * 是一个贪婪量词。

请注意,. 默认不匹配换行符。如果需要删除换行符,请在模式的开头添加 (?s):

'(?s)\\P{ASCII}.*'

关于sql - 在 Hive 中查询时删除 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337753/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com