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”语句中与 '_' 字符进行比较? [关闭]
为啥 const char* 返回值丢失了两个字符?但是在返回之前打印正确的值[重复]
为啥使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能放两个相同的字符? [复制]