我有一张如下表格
names age gender
v_mark 25 male
j_david 26 male
S_Rose 28 Female
mark 21 male
首先,我需要找出名称值包含"下划线"或不,那么 我需要更换"下划线"与"空间"或者"逗号" 名称值基于特定条件。
如果性别是男性,我需要更换"下划线"与空间 如果性别是女性,我需要更换"下划线"用逗号。
我在谷歌搜索过,我发现我需要使用Locate(检查"下划线"值是否存在)和regexp_replace(根据条件用逗号替换下划线)我试过When
和Case
,但收到错误。以下是我的代码。
CASE
(
WHEN LOCATE("_",Table1.names)-1 > 0 AND Table1.gender='male' THEN regexp_replace(T1.names, "_"," ")
WHEN LOCATE("_",Table1.names)-1 > 0 AND Table1.gender='Female' THEN regexp_replace(T1.names, "_",",")
ELSE Table1.names
END
) AS names1
我需要像
这样的输出names1 age gender
v mark 25 male
j david 26 male
S,Rose 28 Female
mark 21 male
任何人都可以帮助我。
答案 0 :(得分:1)
问题与'(' ,在代码下面使用案例后
CASE 当位置(" _",Table1.names)-1> 0和Table1.gender ='男性'那么regexp_replace(T1.names," ","") 当位置(" ",Table1.names)-1> 0和Table1.gender ='女性'那么regexp_replace(T1.names," _",",") ELSE Table1.names 结束 AS名称1
答案 1 :(得分:0)
案例陈述和正则表达式将为您提供所需的结果。
SELECT
CASE gender
WHEN 'male' THEN regexp_replace(names, "_"," ")
WHEN 'Female' THEN regexp_replace(names, "_",",")
END AS names,
age,
gender
FROM table;