gpt4 book ai didi

sql - 案例语句在 Oracle 中未按预期工作

转载 作者:行者123 更新时间:2023-12-01 02:35:06 24 4
gpt4 key购买 nike

我在数据库中有一个包含大量空/空行的字段。我正在尝试创建一个 case 语句,将其更改为“空字段”或类似的东西,以便当它显示给用户时,他们将指示该行没有该列的数据,但由于某种原因它不是在职的。当我选择没有 case 语句的数据时,我会得到一个字符串或一个空字段。当我添加 case 语句时,每一行都返回为 {null} 而不管该列中的内容。我曾多次使用类似的案例陈述,但这让我感到困惑。

SELECT CASE
WHEN col_name = TRIM('') THEN 'Empty Field'
END col_name
FROM table_name

我还尝试用 LIKE 代替等号以及 NULL 代替 TRIM('')

工作解决方案:

SELECT NVL(TRIM(col_name), 'Empty Field') AS col_name
FROM table_name

最佳答案

在 Oracle 中,VARCHAR 上下文中的 '' 被视为 NULL

你可以只使用 NVL(col_name,'Default Value')

select NVL(col_name, 'Empty Field') from table_name

TRIM('') 在 Oracle SQL 中为 NULL,所以没有效果。

SQL> set null NULL
SQL> select trim('') from dual;

T
-
N
U
L
L

就您的 CASE 语句而言,问题在于您使用 NULL 相等。你不能说NULL =任何东西,它是错误的。 NULL 不等于任何东西,甚至不等于它本身。你需要使用:

WHERE col_name IS NULL

IS NULL 和 = NULL 是不一样的。

SQL> select case when id = trim('') then 'Empty' end from nulls;

CASEW
-----
NULL

SQL> select case when id = null then 'Empty' end from nulls;

CASEW
-----
NULL

SQL> select case when id is null then 'Empty Field' end from nulls;

CASEW
-----
Empty Field <--- DATA!

如果这不起作用,也许您的数据中有空格。使用我展示的 SQLPLUS - SET NULL NULL 命令进行测试,以验证它是否真的为 NULL。

关于sql - 案例语句在 Oracle 中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25059534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com