gpt4 book ai didi

sql - Oracle中的Case语句,其中一种条件返回实际列

转载 作者:行者123 更新时间:2023-12-04 18:29:27 24 4
gpt4 key购买 nike

我在ORACLE over TOAD上编写了一个CASE语句,如果满足某些条件,它将返回实际值,否则返回一个新字符串。

以下作品,

SELECT (CASE WHEN COLUMN_NAME = 'SOMETEXT' THEN 'SOMEOTHERTEXT' ELSE 'DIFFERENTTEXT' END) NEWCOLUMNNAME
FROM TABLENAME

以下不起作用,
SELECT (CASE WHEN COLUMN_NAME = 'SOMETEXT' THEN 'SOMEOTHERTEXT' ELSE COLUMN_NAME END) NEWCOLUMNNAME
FROM TABLENAME

我收到以下错误-

ORA-12704:字符集不匹配

有什么帮助吗?

最佳答案

结果类型为varchar和nvarchar的混合。
字符串文字的默认类型为varchar,列的类型为nvarchar。

N放在字符串文字之前,以便将它们定义为nvarchar。

https://docs.oracle.com/cd/E18283_01/server.112/e17118/sql_elements003.htm#i42617

create table TABLENAME (COLUMN_NAME nvarchar2(100));
insert into TABLENAME (COLUMN_NAME) values ('ABC');


select case
when column_name = 'SOMETEXT'
then 'SOMEOTHERTEXT'
else column_name
end as newcolumnname

from tablename
;

ORA-12704: character set mismatch



(第一个 N可以防止隐式强制比较,第二个 N可以防止错误-case语句的所有结果表达式都应为同一类型)
select  case 
when column_name = N'SOMETEXT'
then N'SOMEOTHERTEXT'
else column_name
end as newcolumnname

from tablename
;
NEWCOLUMNNAME
-------------
ABC

关于sql - Oracle中的Case语句,其中一种条件返回实际列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41128738/

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