【问题标题】:SQL Missing ExpressionSQL 缺少表达式
【发布时间】:2017-05-25 13:23:56
【问题描述】:

我正在尝试选择性别为女性或 x 的数据。它不能是男性,我使用的代码返回 Missing Expression :

    SELECT pet_id, name, gender, type, breed
    FROM Pet
    WHERE Name Like '%s' or Name like 'S%'
    And WHERE Gender ='F' or Gender ='X';

我的格式可以吗?

【问题讨论】:

  • 第二个无效的地方 - Where (Name Like '%s' or Name like 'S%') And Gender IN ('F', 'X');
  • 是的,除非您正在执行子查询/联合/等,否则您只在查询中使用一个“where”,您可以使用 AND 或 OR 链接附加子句
  • 语法错误是否符合堆栈溢出问题?

标签: sql oracle


【解决方案1】:

在您的查询中,您使用了两次无效的 where 关键字。
sql 语法禁止您这样做,每个select 关键字可以有一个fromwhere
要选择多个字段,请用逗号分隔。
要从多个表中进行选择,请用逗号分隔。
要在 where 子句中使用多个条件,请使用 andor(此规则适用于大多数编程语言,例如,您不能使用 if(x1==1 and if (x2==2)) 而使用 if(x1==1 && x2==2)
也可以尝试使用in 运算符来满足您的性别条件,例如

Gender in('F','X')

in 运算符允许您检查给定列的值是否存在于数组/列表/一系列可能值中。

【讨论】:

    【解决方案2】:

    您在查询中重复了“where”。按以下方式重写应该可以工作:

    SELECT pet_id, name, gender, type, breed
    FROM Pet
    WHERE (Name Like '%s' or Name like 'S%') AND (Gender ='F' or Gender ='X');
    

    【讨论】:

      【解决方案3】:

      试试这个

      SELECT pet_id,name,gender,type,breed FROM Pet
      Where (Name Like '%s' or Name like 'S%')
      And (Gender ='F' or Gender ='X');
      

      我们不能在单个查询中多次使用“Where”,正如我在您的情况中看到的那样,您应该使用圆括号。

      【讨论】:

        【解决方案4】:

        删除第二个 WHERE 并且不要忘记括号:

        SELECT pet_id, name, gender, type, breed
            FROM Pet
            WHERE (Name Like '%s' or Name like 'S%')
               And Gender in ('F','X')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-05
          相关资源
          最近更新 更多