decode_decoder - CSDN
decode 订阅
DECODE是Oracle公司独家提供的功能(ps:informix数据库也提供该函数),它是一个功能很强的函数。它虽然不是SQL的标准,但对于性能非常有用。其他的数据库供应商还不能提供类似DECODE的功能,甚至有的数据库的供应商批评Oracle的SQL不标准。实际上,这种批评有些片面或不够水平。就象有些马车制造商抱怨亨利·福特的“马车”不标准一样。 展开全文
DECODE是Oracle公司独家提供的功能(ps:informix数据库也提供该函数),它是一个功能很强的函数。它虽然不是SQL的标准,但对于性能非常有用。其他的数据库供应商还不能提供类似DECODE的功能,甚至有的数据库的供应商批评Oracle的SQL不标准。实际上,这种批评有些片面或不够水平。就象有些马车制造商抱怨亨利·福特的“马车”不标准一样。
信息
特    色
其他供应商还不能提供类似功能
提供公司
Oracle公司
中文名
Decode
性    质
一个功能很强的函数
Decode函数
Decode:(指令解码)由于X86指令的长度不一致,必须用一个单元进行"翻译",真正的内核按翻译后要求来工作。1 DECODE 中的if-then-else逻辑在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。需要注意的是,这里的if、then及else 都可以是函数或计算表达式。2 DECODE 的简单例子Oracle系统中就有许多数据字典是使用decode 思想设计的,比如记录会话信息的V$SESSION数据字典视图就是这样。我们从《Oracle8i/9i Reference》资料中了解到,当用户登录成功后在V$SESSION中就有该用户的相应记录,但用户所进行的命令操作在该视图中只记录命令的代码(0—没有任何操作,2—Insert…),而不是具体的命令关键字。因此,我们需要了解当前各个用户的名字及他们所进行的操作时,要用下面命令才能得到详细的结果:select sid,serial#,username,DECODE(command,0,’None’,2,’Insert’,3,’Select’,6,’Update’,7,’Delete’,8,’Drop’,‘Other’) commandfrom v$session where username is not null;3 DECODE实现表的转置数据库中的表是由列和行构成的一个二维表。一般列在任何数据库中都是有限的数量,而行的变化较大,如果表很大,行的数量可能大上千万行。同一列的不同行可能有不同的值,而且不是预先定义的。例:住房公积金报表置换实例:1.各个单位在本地经办行进行开户,开户就是将单位的基本信息和职工信息的进行登记;2.每月各个单位的会计到经办行交缴本单位的所有职工的住房公积金,系统记录有每个职工的交缴明细并在每条记录上记录有经办行的代码;3.每月、季、半年及年终都要求将经办行 变为“列”给出个月的明细报表:经办行:城西区城东区月份:2001.01 xxxx1.xx xxxxx2.xx2001.02 xxxx3.xx xxxxx4.xx。 。 。 。 。 。原来的数据顺序是:城西区2001.01 xxxxx1.xx城东区2001.01 xxxxx2.xx城西区2001.02 xxxxx3.xx城东区2001.02 xxxxx4.xx住房公积金系统记录职工的每月交缴名细的pay_lst表结构是:bank_code varchar2(6)NOT NULL, -- 经办行代码acc_no varchar2(15) not null, -- 单位代码(单位帐号)emp_acc_no varchar2(20) not null, -- 职工帐号tran_date date not null, -- 交缴日期tran_val Number(7,2) not null, -- 交缴额sys_date date default sysdate, --系统日期oper_id varchar2(10) --操作员代码这样的表结构,一般按照将经办行作为行(row)进行统计是很容易的,但是如果希望将经办行变为列(column)这样的格式来输出就有困难。如果用DECODE函数来处理则变得很简单:我们创建一个视图来对的pay_lst表进行查询。将经办行代码变为一些具体的经办行名称即可:CREATE OR REPLACE VIEW bank_date_lst ASSelect to_char(tran_date,’yyyy .mm’),SUM( DECODE ( bank_code,’001’, tran_val,0 )) 城西区,SUM( DECODE ( bank_code,’002’, tran_val,0 )) 城南区,SUM( DECODE ( bank_code,’003’, tran_val,0 )) 城东区FROM pay_lstGROUP BY to_char(tran_date,’yyyy .mm’);建立视图后,可直接对该视图进行查询就可按照列显示出结果。简单应用:如果字段a值为null,则替换为0decode(a,Null,0,a) a字段如果为null,则替换为0,如果不为null,则为a [1] 
收起全文
  • Oracle最强大函数之一Decode函数的使用DECODE(value, if1, then1, if2, then2, if3,then3, ..., else)decode的几种用法1:使用decode判断字符串是否一样DECODE(value, if1, then1, if2, then2, if3,then3, ..., else)...

    Oracle最强大函数之一Decode函数的使用

    DECODE(value, if1, then1, if2, then2, if3,then3, ..., else)

    decode的几种用法
    1:使用decode判断字符串是否一样

    DECODE(value, if1, then1, if2, then2, if3,then3, ..., else)

    含义为
    IF 条件=值1 THEN
        RETURN(value 1)
    ELSIF 条件=值2 THEN
        RETURN(value 2)
        ......
    ELSIF 条件=值n THEN
        RETURN(value 3)
    ELSE
        RETURN(default)
    END IF


    sql测试

    SELECT
    	empno,
    	decode( empno, 7369, 'smith', 7499, 'allen', 7521, 'ward', 7566, 'jones', 'unknow' ) AS NAME 
    FROM
    	emp 
    WHERE
    	rownum <= 10
    输出结果
    7369 smith
    7499 allen
    7521 ward
    7566 jones
    7654 unknow
    7698 unknow
    7782 unknow
    7788 unknow
    7839 unknow
    7844 unknow




    2:使用decode比较大小
    select decode(sign(var1-var2),-1,var 1,var2) from dual
    sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
    sql测试
    SELECT
    	decode( sign( 100-90 ),- 1, 100, 90 ) 
    FROM
    DUAL
    输出结果
    90
    100-90=10>0 则会返回1,所以decode函数最终取值为90
    反正
    SELECT
    	decode( sign( 100-90 ), 1, 100, 90 ) 
    FROM
    DUAL
    输出结果
    100
    100-90=10>0返回1,判断结果为1,返回第一个变量100,最终输出结果为100




    3:使用decode函数分段
    工资大于5000为高薪,工资介于3000到5000为中等,工资小于3000为低薪
    sql测试
    SELECT
    	ename,
    	sal,
    	DECODE(
    		SIGN( sal - 5000 ),
    		1,
    		'high sal',
    		0,
    		'high sal',
    		- 1,
    		DECODE(
    			SIGN( sal - 3000 ),
    			1,
    			'mid sal',
    			0,
    			'mid sal',
    			- 1,
    			DECODE( SIGN( sal - 1000 ), 1, 'low sal', 0, 'low sal', - 1, 'low sal' ) 
    		) 
    	) 
    FROM emp
    输出结果
    SMITH   800    low sal
    ALLEN 1600  low sal
    WARD 1250  low sal
    JONES 2975  low sal
    MARTIN 1250  low sal
    BLAKE   2850  low sal
    CLARK 2450  low sal
    SCOTT 3000  mid sal
    KING  5000  high sal
    TURNER 1500  low sal
    ADAMS 1100  low sal
    JAMES 950          low sal
    FORD 3000  mid sal
    MILLER 1300  low sal


    4:利用decode实现表或者试图的行列转换
    sql测试
    SELECT
    	SUM( DECODE( ENAME, 'SMITH', SAL, 0 ) ) SMITH,
    	SUM( DECODE( ENAME, 'ALLEN', SAL, 0 ) ) ALLEN,
    	SUM( DECODE( ENAME, 'WARD', SAL, 0 ) ) WARD,
    	SUM( DECODE( ENAME, 'JONES', SAL, 0 ) ) JONES,
    	SUM( DECODE( ENAME, 'MARTIN', SAL, 0 ) ) MARTIN 
    FROM
    	EMP
    输出结果如下
    SMITH  ALLEN  WARD   JONES  MARTIN
      800  1600    1250       2975       1250


    5:使用decode函数来使用表达式来搜索字符串
    decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
    decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
    sql测试
    SELECT
    	ENAME,
    	SAL,
    	DECODE( INSTR( ENAME, 'S' ), 0, '不含有s', '含有s' ) AS INFO 
    FROM
    	EMP
    输出结果
    SMITH 800            含有s
    ALLEN 1600    不含有s
    WARD 1250    不含有s
    JONES 2975     含有s
    MARTIN 1250     不含有s
    BLAKE 2850     不含有s
    CLARK 2450     不含有s
    SCOTT 3000    含有s
    KING 5000    不含有s
    TURNER 1500    不含有s
    ADAMS 1100    含有s
    JAMES 950             含有s
    FORD 3000    不含有s

    MILLER 1300    不含有s



    展开全文
  • DECODE用法

    2019-06-26 10:44:22
    语法如下: DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) eg:DECODE(VALUE,‘0’,‘1’,‘2’) 若value为0,则为1,否则为2

    语法如下:
    DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
    eg:DECODE(VALUE,‘0’,‘1’,‘2’)
    若value为0,则为1,否则为2

    展开全文
  • Decode详解

    2017-08-04 22:04:50
    Decode: flag格式:ctf{} 0x25346425353425343525333525343325366125343525373725346425353125366625373825346425343425363725346225346625353425366225346225346425353425343525
    http://www.shiyanbar.com/ctf/1831
    Decode:
    flag格式:ctf{}
    0x25346425353425343525333525343325366125343525373725346425353125366625373825346425343425363725346225346625353425366225346225346425353425343525373825343325366125343525373725346625353125366625373825346425343425343525346225346425353425343525333225343325366125343525373825346425353125366625373825346425353425353525346225346
    4253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253
    4622534642535342534352537372534332536612536622533342534332536612536622533332534332536612534352537382534652534312
    53364253364
    解:
    1.Decode,肯定是运用各种解码
    ox表示十六进制,从网上了解到十六进制编码是把整个数字4个一分求一个字符这样会超出ascii码范围,
    网上的数据都是以ox开头比如网上数据ox12ox96ox48....
    而本题数据就开头是ox唯一一个,那么我们就两个一分。

    十六进制解码转化字符代码如下:

    #十六进制解码转化字符代码如下
    str='253464253534253435253335253433253661253435253737253464253531253666253738253464253434253637253462253466253534253662253462253464253534253435253738253433253661253435253737253466253531253666253738253464253434253435253462253464253534253435253332253433253661253435253738253464253531253666253738253464253534253535253462253464253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253462253464253534253435253737253433253661253662253334253433253661253662253333253433253661253435253738253465253431253364253364'
    def HexDe(str):
    	decstr = ''
    	#i+=4
    	for i in range(0,len(str),2):
    		decstr +=chr(int(str[i:i + 2],16))#unichr()跟chr()一样,只不过返回的是Unicode字符
    	return decstr
    print(HexDe(str))


    2.这就得到结果,很显然这是url编码
    %4d%54%45%35%43%6a%45%77%4d%51%6f%78%4d%44%67%4b%4f%54%6b%4b%4d%54%45%78%43%6a%45%77%4f%51%6f%78%4d%44
    %45%4b%4d%54%45%32%43%6a%45%78%4d%51%6f%78%4d%54%55%4b%4d%54%41%30%43%6a%45%77%4e%51%6f%78%4d%6a%45%4b
    %4f%54%63%4b%4d%54%45%77%43%6a%6b%34%43%6a%6b%33%43%6a%45%78%4e%41%3d%3d


    提供一个网址解它http://tool.chinaz.com/Tools/Unicode.aspx
    3.解得:
    MTE5CjEwMQoxMDgKOTkKMTExCjEwOQoxMD
    EKMTE2CjExMQoxMTUKMTA0CjEwNQoxMjEK
    OTcKMTEwCjk4Cjk3CjExNA==

    4.利用Base64代码得到:

    #-*- coding: utf-8 
    import base64
    
    str=b'MTE5CjEwMQoxMDgKOTkKMTExCjEwOQoxMDEKMTE2CjExMQoxMTUKMTA0CjEwNQoxMjEKOTcKMTEwCjk4Cjk3CjExNA=='
    str=base64.b64decode(str)
    print(str)
    str=str.decode('ascii')#bytes解码会得到str
    print(str)
    


    119
    101
    108
    99
    111
    109
    101
    116
    111
    115
    104
    105
    121
    97
    110
    98
    97
    114


    5.利用Ascii代码得到welcometoshiyanbar

    #从数字转换到字母  按照ASCII编码
    L=[119,101,108,99,111,109,101,116,111,115,104,105,121,97,110,98,97,114]
    
    for x in L:
    	print(chr(x),end='')
    


    得到flag:ctf:{welcometoshiyanbar}

    展开全文
  • 由于学python没多久,昨天使用python的时候,就遇到这种问题,现在来深入研究下与之相关的encode()和decode()函数,和如何把如乱码般的字符串转成中文。encode()和decode()都是字符串的函数,可直接查看关

    对于很多人来说,python的中字符转码是一件很头疼的事情,本来期望结果输出的是中文,结果来一段像这样\xe4\xbd\xa0\xe5\xa5\xbd像是乱码的字符串。

    由于学python没多久,昨天使用python的时候,就遇到这种问题,现在来深入研究下与之相关的encode()和decode()函数,和如何把如乱码般的字符串转成中文。

    encode()和decode()都是字符串的函数,可直接查看关于python字符串章节的官方文档:
    https://docs.python.org/3/library/stdtypes.html?highlight=encode#string-methods


    从英文意思上看,encode和decode分别指编码和解码。在python中,Unicode类型是作为编码的基础类型,即:

          decode                 encode
    str ---------> str(Unicode) ---------> str
    >>> u = '中文'                 # 指定字符串类型对象u 
    
    >>> str1 = u.encode('gb2312')  # 以gb2312编码对u进行编码,获得bytes类型对象
    >>> print(str1)
    b'\xd6\xd0\xce\xc4'
    
    >>> str2 = u.encode('gbk')     # 以gbk编码对u进行编码,获得bytes类型对象
    >>> print(str2)
    b'\xd6\xd0\xce\xc4'
    >>> str3 = u.encode('utf-8')   # 以utf-8编码对u进行编码,获得bytes类型对象
    >>> print(str3)
    b'\xe4\xb8\xad\xe6\x96\x87'
    
    >>> u1 = str1.decode('gb2312') # 以gb2312编码对字符串str进行解码,获得字符串类型对象
    >>> print('u1')
    '中文'
    
    >>> u2 = str1.decode('utf-8')  # 报错,因为str1是gb2312编码的
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

    简要说下一般有哪些编码格式。

    ASCII码

    ASCII码是美国早期制定的编码规范,只能表示128个字符,包括英文字符、阿拉伯数字、西文字符以及32个控制字符。简单来说,就是下面这个表:
    这里写图片描述

    扩展ASCII码(Extended ASCII)

    简单而言,扩展ASCII码的出现是因为ASCII不够用,所以向ASCII表继续扩充到256个符号。
    但是因为对于扩展ASCII,不同的国家有不同的标准,于是促使了Unicode编码的诞生。
    扩展ASCII码表如下:
    这里写图片描述

    Unicode

    准确来说,Unicode不是编码格式,而是字符集。这个字符集包含了世界上目前所有的符号。
    另外,在原来有些字符可以用一个字节即8位来表示的,在Unicode将所有字符的长度全部统一为16位,因此字符是定长的。
    Unicode是长这样的:

    \u4f60\u597d\u4e2d\u56fd\uff01\u0068\u0065\u006c\u006c\u006f\uff0c\u0031\u0032\u0033

    上面这段Unicode的意思是“你好中国!hello,123”。

    关于Unicode,可在这个网站查到所有字符:
    https://unicode-table.com/en/
    这里写图片描述

    这里写图片描述

    GB2312

    当国人得到计算机后,那就要对汉字进行编码。在ASCII码表的基础上,小于127的字符意义与原来相同;而将两个大于127的字节连在一起,来表示汉字,前一个字节从0xA1(161)到0xF7(247)共87个字节,称为高字节,后一个字节从0xA1(161)到0xFE(254)共94个字节,称为低字节,两者可组合出约8000种组合,用来表示6763个简体汉字、数学符号、罗马字母、日文字等。
    在重新编码的数字、标点、字母是两字节长的编码,这些称为“全角”字符;而原来在ASCII码表的127以下的称为“半角”字符。
    简单而言,GB2312就是在ASCII基础上的简体汉字扩展。

    gb2312码表:
    http://www.fileformat.info/info/charset/GB2312/list.htm

    GBK

    简单而言,GBK是对GB2312的进一步扩展(K是汉语拼音kuo zhan(扩展)中“扩”字的声母),
    收录了21886个汉字和符号,完全兼容GB2312。

    GB18030

    GB18030收录了70244个汉字和字符,更加全面,与 GB 2312-1980 和 GBK 兼容。
    GB18030支持少数民族的汉字,也包含了繁体汉字和日韩汉字。
    其编码是单、双、四字节变长编码的。

    UTF(UCS Transfer Format)

    UTF是在互联网上使用最广的一种Unicode的实现方式。我们最常用的是UTF-8,表示每次8个位传输数据,除此之外还有UTF-16。
    UTF-8长这样,“你好中国!hello,123”:

    &#x4F60;&#x597D;&#x4E2D;&#x56FD;&#xFF01;hello&#xFF0C;123

    简单总结(来源于网络)

    • 中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。
    • 汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。
    • 中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。
    • 每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。
    • 终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。
    • UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。
    展开全文
  • decode
  • decode的几种用法1:使用decode判断字符串是否一样 DECODE(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN  RETURN(value 1) ELSIF 条件=值2 THEN  RETURN(value 2)  ...... ELSIF 条件=...
  • decode函数的用法

    2019-04-22 14:34:30
    DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ) SQL测试: decode(1,2,‘双数’,‘单数’)-----测试结果为单数 应用 1、使用decode函数比较大小 Select decode(sign(var1-var2),-1,var1,...
  • decode

    2019-11-01 18:08:08
    DECODE ( expression, search, result [ , search, result ]...[, default ] ) DECODEis similar to the IF-THEN-ELSE andCASEexpressions: CASE expression [WHEN search THEN result] [WHEN search THEN res...
  • decode的几种用法 1:使用decode判断字符串是否一样 DECODE(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN  RETURN(value 1) ELSIF 条件=值2 THEN  RETURN(value 2)  ...... ...
  • 0x00 问题引出: 最近在做一个买房自动化分析Python脚本,需要爬取网页。 在使用urllib获取reqest的response的时候,还要进行编码转换。...UnicodeDecodeError: 'utf-8' codec can't decode byte 0x
  • DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。函数的参数列表是由若干数值及其对应结果值组成的若干序偶形式。当然,如果未能与任何一个实参序偶匹配成功,则函数也有默认的...
  • decode(表达式,表达式的值,满足条件后的取值) decode(表达式,表达式的值,满足条件后的取值,不满足条件的取值) 使用场景:比如在统计某项指标的时候需要给一个默认值,这时候就可以用decode 实例: 查询员工信息...
  • Oracle 中 decode 函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN  RETURN(翻译值1) ELSIF 条件=值2 THEN  RETURN(翻译值2)  ...... ...
  • 经过检查发现是在查询decode函数时报错,将报错的代码单独拿出来 最后发现原来是decode函数中值的类型不同导致的。 先看一下decode函数的含义: decode函数语法: decode(条件,值1,返回值1,值2,返回值2,.....
  • 今天,练习一个通过读取...在读取Walden.txt文本时,出现了“UnicodeDecodeError: 'gbk' codec can't decode byte 0xbf in position 2: illegal multibyte sequence”错误提示。 错误的意思是:Unicode的解码(Dec
  • Python 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案背景描述今天在运用Python pillow模块处理图片时遇到一个错误SyntaxError: (unicode error) 'unicodeescape' codec can't...
  • Exception in thread "main" java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "u9" ...at java.net.URLDecoder.decode(URLDecoder.java:194) at
  • DB2 DECODE 函数的用法

    2013-02-27 10:19:04
    在查询数据,需要进行条件判断时,一般我们使用CASE...WHEN实现,当判断条件为相等时,除了使用CASE...WHEN实现,还可以使用DECODE函数。若要使用like、>、 DECODE()使用方法:  decode(条件,值1,翻译值1,值2,...
  • decode:解码 python内部编码方式为unicode,decode将其他编码方式转换成unicode编码方式,encode将unicode转换成其他编码方式。 因此unicode相当于一个中转: (1)decode->unicode->encode (2)encode->...
  • Oracle之decode函数

    2019-04-07 22:48:31
    说起来也是惭愧,decode函数这么强大的功能竟然前段时间才接触到。大概是平时疏忽掌握学习一些优秀的技术片段,从而于之失之交臂吧。 前段时间在处理项目的某需求时有这么一个情况:在对商品价格进行查找,一个...
1 2 3 4 5 ... 20
收藏数 325,111
精华内容 130,044
关键字:

decode