我有一个列包含:
| 单位_编号|
| - -|
| TL 03-A21型号|
| TL 03-A31型号|
| TL03-VG1|
| TL03-VF1|
现在,我将创建一个表,其中包含使用regexp_like
我需要使用这个函数来匹配字符串中的两个子字符串,即
- 当存在TL和A2时,则类型1
- 当TL和A3存在时,则类型1
- 当存在Tl和VG时,则类型2
- 当存在Tl和VF时,则类型3
我尝试了以下方法,但无效
使用方案1;创建表表1(
Unit_Type varchar(200)
AS
(case
when REGEXP_LIKE (Unit_No,'^TL,','^A2') THEN "Type 1"
when REGEXP_LIKE (Unit_No,'^TL,','^A3') THEN "Type 1"
when REGEXP_LIKE (Unit_No,'^TL,','^VG') THEN "Type 2"
when REGEXP_LIKE (Unit_No,'^TL,','^VF') THEN "Type 3"
else Null
end);
因此,每当我执行时,它都会正确执行,然后当我尝试加载数据时,它会出现以下错误:“错误代码:1210. regexp_like 0.000秒的参数不正确”
知道怎么解决吗?
1条答案
按热度按时间6yjfywim1#
REGEXP_LIKE只接受两个参数。您要传递三个参数。您需要对两个条件进行AND运算
此外,
^
表示“字符串的开头”,因此您的^A3
永远不会匹配,因为它永远不会位于字符串的开头。每个
^TL
后面都多了一个逗号。所以试试这个:
同样,如果
TL
后面总是有两位数,那么可以因为
\d
是任意一位数。