我想从我的Redshift表格中的列中提取特殊字符(标点符号和表情符号)。我已经在这个动态测试器中测试了正则表达式函数:
这个适用于动态测试程序,用于提取非空格字符:[^a-zA-Z\s]
然而在Redshift中,它仍会拉动空格,只会拉出第一个特殊字符,无论它是问号还是表情符号。
根据Redshift文档,它确实支持regexp_substr函数:http://docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html
我在Redshift中有以下查询:
select
*
, regexp_substr(device_contact_name,'[^\sa-zA-Z]') as special_characters
from table
例如,如果该字段有" Daniel!"它将返回"!"但如果这个领域有丹尼尔!"它将返回" "
如果该领域有" Daniel !!"我希望结果返回" !!"
关于如何从结果中正确消除空间并返回所有特殊字符的想法?
提前致谢!
答案 0 :(得分:0)
反斜杠字符是默认的转义字符,因此您应该将其加倍:
select * , regexp_substr(device_contact_name,'[^\\sa-zA-Z]+') as special_characters from table