问题描述
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TRIM(MYFIELD),'-R1',''),'-R2','-R3','-R4','-R5','-R6','-R7','-R8','-R9','-RA','-RB','-RC','-RD','-RE','-RF','') AS TESTFIELD
这是我尝试过的:
REGEXP_REPLACE(MYFIELD,'-R[0-100][a-fA-F]','')
原始数据
- N-RX ABCD
- 组选项-01
- 优势65 SELECT B-R11
- 优势65 SELECT B-RA
- 优势65 SELECT B-R09
- 优势65 SELECT B-RB
- 优势65 SELECT B / 2A
所需结果:
- N-RX ABCD
- 组选项-01
- 优势65 SELECT B
解决方案:
REGEXP_REPLACE(Trim(MyField),'[-|/]R[0-9a-zA-Z*][0-9a-zA-Z*]*$','')
解决方法
您的正则表达式是您当前的问题。尝试类似的东西:
REGEXP_REPLACE(DACL_PDLV_5_DE,'-R[0-9a-fA-F][0-9]*$','')
这与'-R'匹配,后跟一个数字或a-f或A-F,还可以选择后面跟一个数字,但仅在字符串的末尾。
如果您可以使用两位数的十六进制值,则需要进行相应的调整。