Oracle Live SQL:SQL 命令未正确结束

Posted

技术标签:

【中文标题】Oracle Live SQL:SQL 命令未正确结束【英文标题】:Oracle Live SQL: SQL command not properly ended 【发布时间】:2020-11-21 21:17:03 【问题描述】:

我想显示 first_name、last_name 列,并为那些姓氏中包含字母“s”的条目制作大写字母。

我得到了

ORA-00933:SQL 命令未正确结束

错误。任何人都知道我哪里出错了,我该如何解决?

SELECT first_name, last_name FROM CUSTOMERS 
WHERE last_name LIKE "S"
UPDATE CUSTOMERS 
SET 
    first_name = UPPER(first_name)
    last_name = UPPER(last_name)

【问题讨论】:

您可以选择或更新。不能同时进行。 【参考方案1】:

你似乎想要:

UPDATE CUSTOMERS 
SET first_name = UPPER(first_name), last_name = UPPER(last_name)
WHERE last_name LIKE '%S%'

目前尚不清楚您是要匹配名称中的大写“s”还是小写“s”。如果你想要两者,那么:

WHERE UPPER(last_name) LIKE '%S%'

【讨论】:

修复了将姓氏设为大写的问题,但我还可以在同一代码中显示/查看列名和姓氏吗? @Adam:你不能在 Oracle 中同时使用 SELECTUPDATE【参考方案2】:

尝试使用“%S”而不是“S”。如果你输入“S”,它只会显示只有字母 S 的姓氏的结果

【讨论】:

可能你的意思是“%S%” 是的,你是对的,如果你输入“%S”,它会显示以 S 结尾的名字。如果你输入“%S%”,它会显示里面有字母 S 的名字【参考方案3】:

尝试使用子查询:-

UPDATE  CUSTOMERS 
SET  ( first_name ,    last_name ) = (SELECT  UPPER(first_name) ,  UPPER(last_name)  FROM CUSTOMERS   )
WHERE UPPER(last_name)  LIKE 'S'

但是,如果您希望所有姓氏都以 S 开头,请添加通配符,例如

WHERE UPPER(last_name) LIKE 'S%' 

【讨论】:

以上是关于Oracle Live SQL:SQL 命令未正确结束的主要内容,如果未能解决你的问题,请参考以下文章

Oracle :SQL 命令未正确结束

SQL 命令未正确结束 oracle 10g 功能

oracle mybatis一次执行多条sql,提示SQL命令未正确结束

oracle 问题 ORA-00933: SQL 命令未正确结束 如何解决?

Oracle 8i SQL 命令未正确结束

如何解决 ORA-00933:SQL 命令未在 oracle 中正确结束?