嗨,我的选择在这里不工作。有人能告诉我我的语法有什么问题吗?我想得到3列与不同的结果,从名称,上,下和initcap,但当名称博士。只有后面的三个字母是大写的。
select mitarbeitername,
case
when regexp_like(mitarbeitername, '^Dr.*') then upper(substr(mitarbeitername,4))
else upper(substr(mitarbeitername, 1,3))
, lower(substr(mitarbeitername, 1,3) )
, initcap(substr(mitarbeitername, 1,3))
end Name
from mitarbeiter;
1条答案
按热度按时间bweufnob1#
我想得到3列与不同的结果,从名称,上,下和initcap,但当名称博士。只有后面的三个字母是大写的。
CASE
表达式输出单个标量值;它不能**输出三个值。如果需要三个值,则使用三个CASE
表达式:Dr
开头的字符串;你可以使用LIKE
来执行一个简单的字符串比较,这样会快得多。如果你确实想使用正则表达式,那么你希望模式^Dr\.
或^Dr\..*
作为未转义的.
将匹配任何字符。