pl-sql 不能比较两个字符串?为啥[重复]

Posted

技术标签:

【中文标题】pl-sql 不能比较两个字符串?为啥[重复]【英文标题】:pl-sql it can't compare two string ? why [duplicate]pl-sql 不能比较两个字符串?为什么[重复] 【发布时间】:2017-10-10 17:23:49 【问题描述】:
declare 
  v_date varchar2(15);
begin 
  v_date := to_char(sysdate, 'DAY');
  if upper(v_date) = to_char('TUESDAY') then
     dbms_output.put_line('Today is Tuesday');
  else 
     dbms_output.put_line('Today is not tuesday'|| upper(v_date) );
  end if ;
end; 

【问题讨论】:

您的问题是什么?语法错误?总是在做 else 子句?... 试试这个:v_date := trim(to_char(sysdate, 'DAY')); 【参考方案1】:

请修剪你从 to_char 得到的值,然后你应该得到正确的结果

declare 
  v_date varchar2(15);
begin 
  v_date := to_char(sysdate, 'DAY');
  if trim(v_date) = 'TUESDAY' then
     dbms_output.put_line('Today is Tuesday');
  else 
     dbms_output.put_line('Today is not tuesday '|| v_date );
  end if ;
end; 

【讨论】:

奇怪的是TRIM是必需的 我不知道........为什么要空白填充? 实际上我们在从日期获取日期值后得到空间,我认为 to_char 的日期有一些固定长度,如 char,这就是为什么它添加空格来满足它的长度 是的...***.com/questions/13269676/… 。如果To_Char( v_date,'fmDAY', 'nls_date_language=english') = 'TUESDAY'TRIM 的替代品

以上是关于pl-sql 不能比较两个字符串?为啥[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能在“if”语句中与 '_' 字符进行比较? [关闭]

为啥JAVA不可以用“==”来比较两个字符串是不是相等?

为啥 const char* 返回值丢失了两个字符?但是在返回之前打印正确的值[重复]

为啥使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能放两个相同的字符? [复制]

为啥“YYYY-MM-DD”日期格式的两个字符串在PHP中的小于或大于比较工作,即使它们是字符串?

c语言中,为啥不能对字符指针变量指向的字符串再赋值?