【问题标题】:How to replace empty string with null value in oracle using nvl function如何使用nvl函数在oracle中用空值替换空字符串
【发布时间】:2016-05-06 18:14:57
【问题描述】:
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1000, 'The Picture of Dorian Gray', 'Wilde', 'Oscar', 'fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1001, 'Think Big', 'Carson', 'Dr. Ben', 'non - fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1003, 'Mathematical Scandals', 'Pappas', ' ', 'non - fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1004, 'SQL', 'Harris', 'Andy', 'non - fiction');
INSERT INTO books(book_id, title, author_last_name, author_first_name, classify)
VALUES (1010, 'Excel 2016', 'Chan', ' ', 'non - fiction');
commit;

这是我的桌子的价值。在一些记录中,我插入了空字符串''。 如何使用 nvl 函数将空字符串替换为 NULL 值

【问题讨论】:

  • 你的意思是“用空字符串替换 null 吗?”
  • 替换空字符串(在Oracle中与null相同),或者只是空格的值?
  • @AlexPoole 空字符串与 null 不同。
  • @JosephStyons - 它们在 Oracle 中是相同的(varchar 和 varchar2 等)。 Currently, anyway *8-)
  • @JosephStyons 在 Oracle 中,是的。

标签: oracle nvl


【解决方案1】:

这会将单个空格字符串替换为 NULL 值:

UPDATE books
SET    author_first_name = NULL
WHERE  author_first_name = ' ';

或者,这将修剪名称开头和结尾的所有空格(如果留下空字符串,则与 NULL 值相同)

UPDATE books
SET    author_first_name = TRIM( author_first_name );

NVL 函数用于有条件地将 NULL 值替换为另一个值 - 而不是相反,因此不适合将其用于此目的。

【讨论】:

    【解决方案2】:

    NVL 函数用于将NULL 替换为其他值,而不是相反。

    如果您实际上输入了一个空字符串,那么您的问题将无关紧要。在Oracle中,NULL和空字符串''没有区别。

    但您输入的字符串似乎包含一个空格,这与空字符串不同。

    用 NULL 替换这些字符串的简单更新是:

    UPDATE books SET
      author_first_name = NULL
    WHERE
      author_first_name = ' '
    

    【讨论】:

      猜你喜欢
      • 2015-07-10
      • 1970-01-01
      • 2018-01-12
      • 2019-09-15
      • 2015-08-09
      • 2022-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多