【问题标题】:SQL Developer, assigning text values to a columnSQL Developer,将文本值分配给列
【发布时间】:2020-02-11 14:36:03
【问题描述】:

我知道我必须在这里遗漏一些小东西,但我无法弄清楚。我需要将文本分配给选定行的字段。

update exampletable
   set examplecolumn = 'A'
 where column1 LIKE 'Y' 
   and column2 IS NULL 
   and column3 =0 
   and column4 IS NULL;

感谢任何帮助

**edit:我应该澄清一下'examplecolumn'在运行后不会改变。满足“where”条件的所有记录在示例列中仍然具有空值

【问题讨论】:

  • 你的问题到底是什么?
  • 请分享错误信息?
  • 哦,对不起,我应该澄清一下'examplecolumn'在运行后不会改变。满足“where”条件的所有记录在示例列中仍然具有空值。
  • 如果你这样做select * from exampletable where {{ same where }}有什么结果吗?
  • 我认为您的更新声明没有任何问题。尝试创建一个minimal, reproducible example,以便我们最终重现您的问题。

标签: sql oracle sql-update


【解决方案1】:

毕竟,原来真正的问题是

当我运行时:select count(*) from exampletable where examplecolumn like 'A'; 我得到 0 条记录返回。这就是为什么我最初认为第一个更新语句不起作用的原因..任何想法为什么会返回 0 记录??

那是因为您误用了LIKE 运算符和/或提供了无效的搜索字符串。看看这个例子:

SQL> select * From dept;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

SQL> select count(*) From dept where dname like 'A';

  COUNT(*)
----------
         0    --> because no row contains exactly letter A in DEPT column

SQL> select count(*) From dept where dname like 'A%';

  COUNT(*)
----------
         1    --> using the wildcard, it found ACCOUNTING

SQL>

换句话说,您的查询搜索了包含完全字母A的字符串。我认为您在问题中发布的代码只是一个示例,而您的 real 代码将列更新为其他内容,即更长的字符串。因为,如果它真的是A,查询就会返回它:

SQL> insert into dept (deptno, dname) values (1, 'A');

1 row created.

SQL> select count(*) From dept where dname like 'A';

  COUNT(*)
----------
         1   --> now it found DNAME = A

SQL> select count(*) From dept where dname like 'A%';

  COUNT(*)
----------
         2   --> wildcard found both DNAME = A and ACCOUNTING

SQL>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2021-07-06
    • 1970-01-01
    相关资源
    最近更新 更多