【问题标题】:Replacing any NULL fields with a string用字符串替换任何 NULL 字段
【发布时间】:2014-03-04 00:52:29
【问题描述】:

我是 SQL 新手,这个问题困扰了我。我应该编写一个列出表中所有数据的 SQL 语句,但是如果一列可能包含 NULL 值(在这种情况下只有一个字段为 NULL),则必须在该列中打印短语“-NONE-”排。实验室提示我必须使用一个或多个单行函数来完成此操作。

我们正在使用 Oracle SQL Developer 来测试脚本。我正在尝试使用 REPLACE 功能,但我不断收到错误消息。我尝试过使用 NVAL、REPLACE 和其他类似的函数,但我显然弄错了语法。例如:

SELECT *, REPLACE(manager_id, NULL, '-NONE-')
FROM departments;

^总是返回错误:在预期的地方缺少 FROM 语句

【问题讨论】:

    标签: sql replace null


    【解决方案1】:

    你想要的函数是coalesce()。这是 ANSI 标准函数。

    假设你的变量是一个字符串:

    SELECT d.*, COALESCE(manager_id, '-NONE-')
    FROM departments d;
    

    如果不是字符串,则先转换:

    SELECT d.*, COALESCE(cast(manager_id as varchar(255)), '-NONE-')
    FROM departments d;
    

    【讨论】:

    • 比我的回答好多了
    • 所以,我尝试了这两种方法,我得到相同的“FROM 关键字未在预期的位置找到”。知道为什么吗?以下代码返回插入字符串的右侧行: SELECT COALESCE(cast(manager_id AS varchar(225)), '-NONE-') FROM department;但是当我包含 '*' 选择器时,我会收到该错误消息。 (对不起,糟糕的格式——这个网站的新手=/)
    • @user3281385 。 . .某些数据库允许您使用 * 并添加其他列。其他要求您使用表别名加上*。以上应该可以工作。
    【解决方案2】:

    也许这对你有帮助:

    select 
        *, 
        (case when manager_id is null then '-none-' else manager_id end) as manager_id_2
    from 
        departments
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2023-03-26
      • 1970-01-01
      • 2016-12-24
      • 2021-04-04
      相关资源
      最近更新 更多