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 中同时使用SELECT
和 UPDATE
。【参考方案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 mybatis一次执行多条sql,提示SQL命令未正确结束