我正在使用Oracle SQL,这是我的表:
电影(目录编号,格式,标题,年份,数字光盘,等级,时间,类型)
如果等级中的某些值为空,如何将所有空值更改为NR文本?
这是我尝试过的方法,但是如何让NR的列标题而不是(NVL,RATING,'NR')成为评分
SELECT RATING, nvl(RATING,'NR')
FROM FILM
WHERE RATING IS NULL;
RATING NVL(RATING,'NR
------------- -----------------
NR
NR
NR
谢谢!
答案 0 :(得分:0)
使用coalesce()
select coalesce(rating,'NR')
您的评级列必须为varchar数据类型
或使用NVL
NVL( string1, replace_with )
如果string1为null,则返回值。
答案 1 :(得分:0)
从电影中选择nvl(rating,'Nr')评级
答案 2 :(得分:0)
您可以为结果中的每一列命名:
SELECT
rating AS rating_with_nulls,
NVL(rating, 'NR') AS rating
FROM film
ORDER BY rating_with_nulls;
这称为列别名。 AS
是可选的。
您可以在以下文档的语法图中找到它:https://docs.oracle.com/database/121/SQLRF/statements_10002.htm#SQLRF01702。查找“ select_list”,您将看到expr [AS] c_alias
。可能需要一些时间来熟悉这些图表,但是它们才变得真正有用。
有时,将结果命名为列并不是一个好主意。在上面的示例中,如果我们有ORDER BY rating
怎么办? rating
指的是什么?原始列或表达式结果(其中null替换为'NR')?
NVL
是特定于Oracle的。在这种情况下,标准的SQL函数是COALESCE
。可以使用NVL
,但最好还是知道它仅是Oracle以及在其他DBMS中使用什么。