代码:
当长度(中性)>0然后regexp_extract(neutral,"(.*@)",0)else"结束为neutral
上面的查询返回带有@符号的输出值,例如,如果输入为1234@gmail.com,则输出为1234@.如何使用上面的查询删除@符号。并且应该评估结果输出的数字,如果它包含任何非数字字符,则应该被拒绝。
样本输入:1234@gmail.com输出:1234样本输入:123adc@gmail.com输出:空
您可以将正则表达式表述为^[^@]+
,它将匹配电子邮件地址中的所有字符,包括但不包括@
字符:
REGEXP_EXTRACT(neutral, '^[^@]+', 0) AS neutral
请注意,这种方法也是干净的,使我们不必使用庞大的CASE
表达式。
试试这个代码:
val pattern = """([0-9]+)@([a-zA-Z0-9]+.[a-z]+)""".r
val correctEmail = "1234@gmail.com"
val wrongEmail = "1234abcd@gmail.com"
def parseEmail(email: String): Option[String] =
email match {
case pattern(id, domain) => Some(id)
case _ => None
}
println(parseEmail(correctEmail)) // prints Some(1234)
println(parseEmail(wrongEmail)) // prints None
此外,使用Option
s而不是null
更为惯用