regexp_time_limit&®exp_stack_limit 参数
报错:
Timeout exceeded in regular expression match.
为了针对表中的手机号码进行加密
SQL 语句:
SELECT
ID
,PAYMENT
,MODIFIED
,PAY_TIME
,POST_FEE
,DISCOUNT_FEE
,STATUS
,CREATED
,TID
,TYPE
,ACCOUNTINFO_ID
,RECEIVED_PAYMENT
,COUPON_FEE
,PAID_COUPON_FEE
,ISCAINIAO
,PRICE
,TOTAL_FEE
,ADJUST_FEE
,BUYER_NICK
,SELLER_NICK
,ORDER_TAX_FEE
,SELLER_MEMO
,CONSIGN_TIME
,END_TIME
,PLATFORM
,SHOPCODE
,BUYER_RATE
,BUYER_MEMO
,BUYER_MESSAGE
,BUYER_FLAG
,SELLER_FLAG
,PAY_NO
,PAY_WAY
,REFUND_STATUS
##,RECEIVER_ADDRESS
##,RECEIVER_MOBILE
,md5(RECEIVER_ADDRESS) as RECEIVER_ADDRESS ####加密地址
,case when regexp_replace(RECEIVER_MOBILE,'\s+','') regexp '^[0-9]+$' =1 ####明文
then md5(RECEIVER_MOBILE)
when regexp_replace(RECEIVER_MOBILE,'\s+','') regexp '^[0-9]+\+[0-9\]+|^\+[0-9]+[0-9\]+$' =1 ##-半脱敏
then md5(RECEIVER_MOBILE)
else RECEIVER_MOBILE end as user_id ####加密 空 全脱敏不做处理
,case when regexp_replace(RECEIVER_MOBILE,'\s+','') regexp '^[0-9]+$' =1 ####明文
then 0
when regexp_replace(RECEIVER_MOBILE,'\s+','') regexp '^[0-9]+\+[0-9\]+|^\+[0-9]+[0-9\]+$' =1 ##-半脱敏
then 1
when regexp_replace(RECEIVER_MOBILE,'\s+','') regexp '[a-zA-Z]' =1 ## 加密
then 2
when regexp_replace(RECEIVER_MOBILE,'\s+','') regexp '^\*+$' =1
or length( regexp_replace(RECEIVER_MOBILE,'\s+','') )=0 ##-全脱敏 与 空字符串
then 3
end as encrypt_type ####user_id加密类型 0 明文 1半脱敏 2加密 3全脱敏与空字符串
,RECEIVER_NAME
,RECEIVER_STATE
,RECEIVER_ZIP
,RECEIVER_DISTRICT
,RECEIVER_CITY
,RECEIVER_PHONE
,RECEIVER_TOWN
,RECEIVER_COUNTRY
,SOURCE
,SOURCEDATA
,BATCHNO
,tag
,up_time
,oaid
,encrypt_address
,encrypt_name
,encrypt_mobile
,is_decrypt
from order_info_01
参考官网解析:
把此两值调成最大,还是一样报错,这次报堆内存溢出
Overflow in the regular expression backtrack stack.
结论:
SQL取字段有问题,取的手机段,因为我们的数据没有清洗,
里面有‘,中文和括号等造成,
修改方式:
第一步清洗
或直接取RECEIVE_PHONE
SELECT
ID
,PAYMENT
,MODIFIED
,PAY_TIME
,POST_FEE
,DISCOUNT_FEE
,STATUS
,CREATED
,TID
,TYPE
,ACCOUNTINFO_ID
,RECEIVED_PAYMENT
,COUPON_FEE
,PAID_COUPON_FEE
,ISCAINIAO
,PRICE
,TOTAL_FEE
,ADJUST_FEE
,BUYER_NICK
,SELLER_NICK
,ORDER_TAX_FEE
,SELLER_MEMO
,CONSIGN_TIME
,END_TIME
,PLATFORM
,SHOPCODE
,BUYER_RATE
,BUYER_MEMO
,BUYER_MESSAGE
,BUYER_FLAG
,SELLER_FLAG
,PAY_NO
,PAY_WAY
,REFUND_STATUS
##,RECEIVER_ADDRESS
##,RECEIVER_MOBILE
,md5(RECEIVER_ADDRESS) as RECEIVER_ADDRESS ####加密地址
,RECEIVER_MOBILE
,RECEIVER_NAME
,RECEIVER_STATE
,RECEIVER_ZIP
,RECEIVER_DISTRICT
,RECEIVER_CITY
,case when regexp_replace(RECEIVER_PHONE,'\s+','') ####明文
then md5(RECEIVER_PHONE)
when regexp_replace(RECEIVER_PHONE,'\s+','') ##-半脱敏
then md5(RECEIVER_PHONE)
else RECEIVER_PHONE end as user_id ####加密 空 全脱敏不做处理
,case when regexp_replace(RECEIVER_PHONE,'\s+','') ####明文
then 0
when regexp_replace(RECEIVER_PHONE,'\s+','') ##-半脱敏
then 1
when regexp_replace(RECEIVER_PHONE,'\s+','') ## 加密
then 2
when regexp_replace(RECEIVER_PHONE,'\s+','')
or length( regexp_replace(RECEIVER_PHONE,'\s+','') ) ##-全脱敏 与 空字符串
then 3
end as encrypt_type ####user_id加密类型 0 明文 1半脱敏 2加密 3全脱敏与空字符串
,RECEIVER_TOWN
,RECEIVER_COUNTRY
,SOURCE
,SOURCEDATA
,BATCHNO
,tag
,up_time
,oaid
,encrypt_address
,encrypt_name
,encrypt_mobile
,is_decrypt
from order_info_01
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏