【问题标题】:Oracle issue with concat()concat() 的 Oracle 问题
【发布时间】:2020-05-29 05:41:43
【问题描述】:
SELECT EMPLOYEE_ID, CONCAT(FIRST_NAME," ",LAST_NAME) AS EMPLOYEE_NAME, HIRE_DATE
FROM EMPLOYEES

我尝试运行上面的代码,它给了我错误(无效的参数数量)进行连接。我正在尝试在 FIRST_NAME 和 LAST_NAME 之间添加一个空格。

【问题讨论】:

  • 尝试使用 ' ' 单引号而不是双引号
  • 试过单引号,可悲的是同样的错误
  • 提供表的 DDL 作为 CREATE TABLE 脚本和一些示例数据作为 INSERT INTO 脚本。指定 MySQL 版本(可能是 8+?或者根本不是 MySQL?)。提供完整的错误消息。
  • 这表明您使用 Oracle 作为 DBMS,并得到错误代码 ORA-00909 。你不是吗?
  • 是的,我使用 Oracle 作为 DBMS。使用 || 修复运算符

标签: sql oracle concat string-literals


【解决方案1】:

您收到的错误表明您将 Oracle 用作 DBMS,而不是 MySQL,并收到错误代码 ORA-00909

Oracle的CONCAT()函数中最多可以放两个参数,其中禁止使用双引号,可以使用单引号代替。所以,在你的情况下,尝试使用 as

SELECT EMPLOYEE_ID, CONCAT(CONCAT(FIRST_NAME,' '),LAST_NAME) AS EMPLOYEE_NAME, HIRE_DATE
  FROM EMPLOYEES

或管道作为连接运算符

SELECT EMPLOYEE_ID, FIRST_NAME||' '||LAST_NAME AS EMPLOYEE_NAME, HIRE_DATE
  FROM EMPLOYEES

【讨论】:

    【解决方案2】:

    请使用以下查询,

    SELECT EMPLOYEE_ID, FIRST_NAME||' '||LAST_NAME AS EMPLOYEE_NAME, HIRE_DATE
    FROM EMPLOYEES;
    

    【讨论】:

      【解决方案3】:

      如果字段名称正确,它应该可以工作,没有语法错误。如果您只想在字段之间添加分隔符,请尝试 SELECT CONCAT_WS(' ',FIRST_NAME,LAST_NAME);

      【讨论】:

      • 这是在问题被识别为 oracle 之前回答的,因此仅对 MySQL 有效。
      猜你喜欢
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 2012-05-22
      • 2021-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      相关资源
      最近更新 更多