我有一个org_name列表,例如
12345678 - West Highland
87654321 - (Vacant)
12348765 - (Closed) etc
我只想保留有效的名字-在这种情况下,是西高地
除了数字,我用以下方法去除了所有内容:
SELECT substr(org_name,1,locate(' ',org_name)) as position_num
FROM old;
但是,如果我只想保留名称并命名为:name,该怎么办? 是摆脱名称之类的三种方法
- (Vacant)
- (Closed)
= empty
答案 0 :(得分:0)
也许不是最有效的方法
SELECT
CASE WHEN locate('(Closed)', org_name) THEN split_part(org_name, '-', 1)
CASE WHEN locate('(Vacant)', org_name) THEN split_part(org_name, '-', 1)
ELSE org_name
END
FROM old
这也许也可以,但是我对正则表达式语法不确定
SELECT
CASE WHEN regex_like(org_name, '(\\(Closed\\)|\\(Vacant\\))') THEN split_part(org_name, '-', 1)
ELSE org_name
END
FROM old
答案 1 :(得分:0)
如果我做对了,我可以建议您使用正则表达式的功能来选择/修改/删除所需的内容。
示例:
SELECT name
FROM table
WHERE REGEXP_LIKE (name, '^A(*)');
此REGEXP_LIKE示例将返回以'A'开头的名称。