早上好
select CASE t.gift_club_start_date
WHEN ' ' THEN ' '
ELSE SUBSTR(t.gift_club_start_date,5,2)|| '/' ||SUBSTR(t.gift_club_start_date,7,2)|| '/' ||SUBSTR(t.gift_club_start_date,1,4)
END
from GIFT t这显示如果行是空的,则显示为空。
我尝试用动态SQL来完成这段代码。
'select CASE t.gift_club_start_date
WHEN '' '' THEN '' ''
ELSE SUBSTR(t.gift_club_start_date,5,2)|| ''/'' ||SUBSTR(t.gift_club_start_date,7,2)|| ''/'' ||SUBSTR(t.gift_club_start_date,1,4)
END
from GIFT t'但是,当行为空时,输出将显示此//。
那么,如何正确编码以显示空行呢?这条线WHEN '' '' THEN '' ''
太谢谢你了
发布于 2016-10-18 14:11:11
基本上,您可以使用双'解决以下问题:
SQL> declare
2 vSQL varchar2(100);
3 vVar varchar2(100);
4 begin
5 vSQL := 'select '' '' from dual';
6 execute immediate vSQL into vVar;
7 dbms_output.put_line('result:<' || vVar || '>');
8 end;
9 /
result:< >另一种方式可以是:
SQL> declare
2 vSQL varchar2(100);
3 vVar varchar2(100);
4 begin
5 vSQL := q'[select ' ' from dual]';
6 execute immediate vSQL into vVar;
7 dbms_output.put_line('result:<' || vVar || '>');
8 end;
9 /
result:< >对于您的情况,请注意“空”与' '不同;如果您需要检查空值,则应该使用以下内容
WHEN t.gift_club_start_date is NULL THEN...发布于 2016-10-18 14:10:59
您可以使用||CHR(39)
'WHEN ' || CHR(39) || CHR(39) || ' THEN ' || CHR(39) || ' ' ||CHR(39) https://stackoverflow.com/questions/40110402
复制相似问题