SQL将名称的第一个字母和最后一个字母大写
我想做一个查询,显示我的姓,首字母大写,最后一个字母大写 示例:姓class='Alexander' 查询后:姓氏class='AlexandeR' 我试过这样做SQL将名称的第一个字母和最后一个字母大写,sql,oracle,Sql,Oracle,我想做一个查询,显示我的姓,首字母大写,最后一个字母大写 示例:姓class='Alexander' 查询后:姓氏class='AlexandeR' 我试过这样做 select initcap(last_name)+LOWER(SUBSTR(last_name,2,LENGTH(last_name))) name_last from employees 但我得到这个错误01722。00000-“无效号码” 我正在使用SQL Oracle数据库 有人能解释一下问题出在哪里吗?要连接您正在使用的字
select initcap(last_name)+LOWER(SUBSTR(last_name,2,LENGTH(last_name))) name_last from employees
但我得到这个错误01722。00000-“无效号码”
我正在使用SQL Oracle数据库
有人能解释一下问题出在哪里吗?要连接您正在使用的字符串“+”,它考虑到您的字符串是数字,但事实并非如此,您会遇到此错误 要在Oracle中连接字符串,请使用| |运算符或CONCAT()函数 因此,您的查询变成:
select initcap(last_name) || LOWER(SUBSTR(last_name,2,LENGTH(last_name))) name_last from employees;
现在您可以修改它以获得预期的输出。问题在于连接字符。但是,我想建议一种稍微不同的方法:
select (upper(substr(last_name, 1, 1)) ||
substr(last_name, 2, len(last_name) - 2) ||
upper(substr(last_name, -1, 1))
)
换句话说,避免
initcap()
。问题在于意外的副作用initcap()
将字符串中每个单词的第一个字母大写。因此,如果名称由多个单词组成,那么每个单词都将大写。在这种情况下,我认为假设姓氏只包含一个名称是不明智的。在Oracle中使用|
进行字符串连接,而不是+
选择initcap(反向(反向(姓氏)))
如果你觉得自己很傻:-)我怎么能把最后一个字母大写?@Jeroen-外部initcap会覆盖内部initcap所做的更改,因此你仍然只会把第一个字母大写。不错的尝试*8-)啊哈:(羞耻:染料,它工作得很好,谢谢你,但是你必须使用长度来代替sql中的LEN,你能告诉我,我如何写一个浮点数,比如佣金,在右边加零填充例如:佣金pct=0.5查询后,佣金pct=0.50000000?我发现它被解码(佣金pct,NULL,'NO commission',to_CHAR(rpad(委员会,9,'0'))通信