GVKun编程网logo

CASE 语句和 DECODE 是否等效?(case语句中的default)

13

在本文中,我们将给您介绍关于CASE语句和DECODE是否等效?的详细内容,并且为您解答case语句中的default的相关问题,此外,我们还将为您提供关于(转)UnicodeDecodeError:

在本文中,我们将给您介绍关于CASE 语句和 DECODE 是否等效?的详细内容,并且为您解答case语句中的default的相关问题,此外,我们还将为您提供关于(转) UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe5 in position 4: ordinal n...、C#是否等效于JavaScript的encodeURIComponent()?、Eclipse 运行python代码报错: UnicodeDecodeError: ''utf8'' codec can''t decode byte、Java泛型-这两个方法声明是否等效?的知识。

本文目录一览:

CASE 语句和 DECODE 是否等效?(case语句中的default)

CASE 语句和 DECODE 是否等效?(case语句中的default)

看起来简单的 CASE 表达式和 DECODE 函数是等效的,它们返回的结果应该是相同的。他们是吗?

该文档对简单的 CASE 表达式有以下说明:

简单的 CASE 表达式返回 selector_value 匹配选择器的第一个结果。不评估剩余的表达式。如果没有 selector_value 匹配选择器,则 CASE 表达式如果存在则返回 else_result,否则返回 NULL。

将其与DECODE 函数进行比较,描述似乎是相同的。

DECODE 将 expr 与每个搜索值一一比较。如果 expr 等于搜索,则 Oracle 数据库返回相应的结果。如果未找到匹配项,则 Oracle 返回默认值。如果省略 default,则 Oracle 返回 null。

由于搜索到的 CASE 表达式可以等同于简单的,这也可以解释为相同。

这三个语句似乎都返回相同的结果 0。

select case 1 when 2 then null else 0 end as simple_case     , case when 1 = 2 then null else 0 end as searched_case     , decode(1, 2, null, 0) as decode  from dual

简单的 CASE 表达式和 DECODE 函数(以及在特定情况下搜索的 CASE 表达式)是否总是返回相同的结果?

答案1

小编典典

Ben 写了一篇关于 DECODE 和 CASE 之间差异的冗长答案。他演示了 DECODE 和 CASE 可能会为明显相同的一组值返回不同的数据类型,而没有正确解释为什么会发生这种情况。

DECODE() 非常规范:它始终是第一个结果参数的数据类型。Oracle 将隐式转换应用于所有其他结果参数。如果(比如说)第一个结果参数是数字并且默认值是日期,它会抛出一个错误。

ORA-00932: inconsistent datatypes: expected NUMBER got DATE

在第一种情况下,第一个结果参数是 NULL,Oracle 决定将其视为 VARCHAR2。如果我们将其更改为第一个结果参数为数字且默认值为空,则 DECODE() 语句将返回 NUMBER;DUMP() 证明确实如此。

而 CASE 坚持所有返回的值都具有相同的数据类型,如果不是这种情况,则会抛出编译错误。它不会应用隐式转换。

差异归结为这一点。以下 DECODE 语句将运行,CASE 语句不会:

select decode(1, 1, 1, ''1'') from dual;select case 1 when 1 then 1 else ''1'' end from dual;

(转) UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe5 in position 4: ordinal n...

(转) UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe5 in position 4: ordinal n...

更新

更新以后,每次启动终端会提示,import  sitecustomize failed,原因是 setdefaultencoding 在Python2.5以后删掉了,因此我们将 sitecustomize.py的文件内容改为:

import sys

reload(sys)  #重新载入

sys.setdefaultencoding(''utf-8'')

 

启动终端不会再有错误提示,但是在启动 jupyter notebook的时候,有错误,于是又将这个文件的内容更新为:

import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding(''utf-8'')

str = ''中文''
str.encode(''gb18030'')

在启动终端时会显示错误,但是启动jupyter notebook 则可以显示当前目录下的中文.最后我将两个export 语句写入了.bashrc文件.使用notebook时,保证当前目录下无中文.

 

我用的方法:

    UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe5 in position 4: ordinal not in range(128)
    如果出现编码问题:类似错误如下UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe5 in position 4: ordinal not in range(128),这是由于python2中的编码bug,需要在python目录/lib/python2.7/site-packages/中新建一个文件:
    sitecustomize.py,其中包含下列代码。

    import sys
    sys.setdefaultencoding(‘utf-8’)

    随后再修改系统默认编码:
    export LANG=en_US:UTF-8
    export LANGUAGE=en_US:en
    cd your work_folder,启动`jupyter notebook``即可解决
————————————————
版权声明:本文为CSDN博主「aenjon」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/farphone/article/details/85801266

 

其它方法:

[1]   https://www.jianshu.com/p/516eb2a57ee6

[2]  https://www.cnblogs.com/lcngu/p/7077137.html

 

C#是否等效于JavaScript的encodeURIComponent()?

C#是否等效于JavaScript的encodeURIComponent()?

在JavaScript中:

encodeURIComponent("©√") == "%C2%A9%E2%88%9A"

C#应用程序是否等效?为了转义HTML字符,我使用了:

txtOut.Text = Regex.Replace(txtIn.Text,@"[\u0080-\uFFFF]",m => @"&#" + ((int)m.Value[0]).ToString() + ";");

但是我不确定如何将匹配项转换为JS使用的正确十六进制格式。例如此代码:

txtOut.Text = Regex.Replace(txtIn.Text,m => @"%" + String.Format("{0:x}",((int)m.Value[0])));

返回“ %a9%221a""©√",而不是"%C2%A9%E2%88%9A"它看起来像我需要了分割字符串为字节或东西。

编辑:这是一个Windows应用程序中,唯一可用的项目System.Web有:AspNetHostingPermissionAspNetHostingPermissionAttribute,和AspNetHostingPermissionLevel

Eclipse 运行python代码报错: UnicodeDecodeError: ''utf8'' codec can''t decode byte

Eclipse 运行python代码报错: UnicodeDecodeError: ''utf8'' codec can''t decode byte

错误信息如下:
在Eclipse上面运行python脚本时报错
网上报这个错误的原因有很多,包括:

  1. 脚本本身不是使用UTF-8编码的,需要转成utf-8编码
  2. 脚本的头部需要声明为:utf-8 编码 脚本头部需要使用utf8编码
  3. 工程路径中包含中文字符也会报这个错误,因为python会读取windows中工程路径,而windows中的编码一般都是亲生的gbk类编码不太容易修改,所以这种情况下需要将你的工程移到没有中文字符的目录下,然后在重新导入.

Java泛型-这两个方法声明是否等效?

Java泛型-这两个方法声明是否等效?

给定一些类SomeBaseClass,这两个方法声明是否等效?

public <T extends SomeBaseClass> void myMethod(Class<T> clz)

public void myMethod(Class<? extends SomeBaseClass> clz)

答案1

小编典典

对于呼叫者:是的,它们是等效的。

对于方法中的代码:否。

不同之处在于,在第一个示例的代码中,您可以使用类型T(例如,保存由创建的对象clz.newInstance()),而在第二个示例中,您不能使用类型T。

关于CASE 语句和 DECODE 是否等效?case语句中的default的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于(转) UnicodeDecodeError: ''ascii'' codec can''t decode byte 0xe5 in position 4: ordinal n...、C#是否等效于JavaScript的encodeURIComponent()?、Eclipse 运行python代码报错: UnicodeDecodeError: ''utf8'' codec can''t decode byte、Java泛型-这两个方法声明是否等效?等相关知识的信息别忘了在本站进行查找喔。

本文标签: