首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态SQL,如何将‘’编码为动态SQL?

动态SQL,如何将‘’编码为动态SQL?
EN

Stack Overflow用户
提问于 2016-10-18 14:03:59
回答 2查看 50关注 0票数 1

早上好

代码语言:javascript
复制
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来完成这段代码。

代码语言:javascript
复制
'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 '' ''

太谢谢你了

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-18 14:11:11

基本上,您可以使用双'解决以下问题:

代码语言:javascript
复制
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:< >

另一种方式可以是:

代码语言:javascript
复制
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:< >

对于您的情况,请注意“空”与' '不同;如果您需要检查空值,则应该使用以下内容

代码语言:javascript
复制
WHEN t.gift_club_start_date is NULL THEN...
票数 2
EN

Stack Overflow用户

发布于 2016-10-18 14:10:59

您可以使用||CHR(39)

代码语言:javascript
复制
'WHEN ' || CHR(39) || CHR(39) || ' THEN ' || CHR(39) || ' ' ||CHR(39) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40110402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档