【问题标题】:unable to execue the following select statement getting error无法执行以下选择语句得到错误
【发布时间】:2020-01-24 09:28:28
【问题描述】:

当我执行以下选择语句时,我收到以下错误。

我正在尝试在 Oracle 服务器 9.1 中执行以下语句。

我相信因此我会收到此错误。

我知道我们可以通过 '%Blondeau D''Uva%' 执行单引号查询。但我正在寻找将特殊字符值作为参数传递的查询。

Kindluy 告诉我如何在旧的 oracle 服务器中转义单引号

错误:

  ORA-00933: SQL Command not properly ended
Error at line : 1 Column : 50

查询:

Select * FROM TABLEA where UI_FNAME like q'[%Michael%]' and UI_LNAME  like q'[ %Blondeau D'Uva%]';

【问题讨论】:

  • WHERE WHERE...
  • 您的问题到底是什么?对代码的修复是使用双引号并删除第二个 where。您是什么意思将特殊字符作为参数传递?这与您发布的代码有什么关系?
  • 或者你搜索类似'D'||unistr('\C2AD')||'Uva'的东西?
  • 不它仍然不工作..它在其他 sql server 中工作正常,但不适用于此服务器。我面临问题的服务器的 Oracle 版本是 9.2.0.8.0
  • “服务器”是指“数据库”吗?

标签: sql oracle select sql-like


【解决方案1】:

在 oracle 上以下应该可以工作

Select * 
FROM   TABLEA 
where  UI_FNAME like '[%Michael%]' 
and    UI_LNAME like '[ %Blondeau D''Uva%]';

所以没有重复的地方 你必须在 D 和 Uva 之间引用 ' ' 之前的 q 可能是错误的......所以我也将其删除了。

好的,用 q 运算符试了一下:

Select * 
FROM   employees 
where  first_name like q'[%Michael%]' 
and last_name  like q'[ %Blondeau D'Uva%]';

没有错误没有行...

【讨论】:

【解决方案2】:

关于您的查询的两件事:

  1. where 的使用次数应该只有一次。
  2. 关于第二个条件。您在 like 子句中使用了 q'[ %Blondeau D'Uva%]'。我认为这不会给你你可能正在寻找的结果。这与您的错误无关,但重新检查查询仍然没有什么坏处。

试试这个,这应该不会让你遇到任何错误:

Select * FROM TABLEA 
 where UI_FNAME like q'[%Michael%]' 
   and UI_LNAME like q'[%Blondeau D'Uva%]';

干杯!

【讨论】:

    【解决方案3】:

    正如其他人试图给你一个答案,但我认为你可能需要将% 保留在括号外 -

    Select * 
    FROM   TABLEA 
    where  UI_FNAME like '%[Michael]%' 
    and    UI_LNAME like '%[ Blondeau D''Uva]%';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2017-08-04
      • 2012-05-30
      相关资源
      最近更新 更多