今天在采集58-二手市场数据时,遇到一个问题:网页的样式不够规范导致采到的数据奇形怪状,具体的数据表如下:

这种数据不利于观察,也无法用于分析。我是用case-when来进行初步的清洗。(substr中的startindex和endindex需要自己数~)

select case when t.condition like '<!-- 成色 -->%' thensubstr(t.condition, 20, length(t.condition) - 26) whent.condition like '成 色:%' thensubstr(t.condition, 12, length(t.condition) - 18) else '\N' END CONDITION,t.classification2,CASE WHEN T.RELEASE_DATE LIKE '<li class="time" title="发布日期">%' then substr(t.release_date,31,length(t.release_date)-35) whent.release_date like '<li class="time">%' thensubstr(t.release_date,18,length(t.release_date)-22) whent.release_date like '更新时间%' thensubstr(t.release_date,6,length(t.release_date))else '\N' END release_date,case when t.price like '<span%>' thensubstr(t.price,27,length(t.price)-34) whent.price like '%<' thensubstr(t.price,27,length(t.price)-36)||SUBSTR(T.PRICE,LENGTH(T.PRICE)-2,LENGTH(T.PRICE)) WHEN T.PRICE LIKE '价 格:%' THEN SUBSTR(T.PRICE,26,LENGTH(T.PRICE)-35) ELSE '\N' END PRICE,CASE WHEN T.SELLERNAME LIKE 'linkman%''' thensubstr(t.sellername,10,length(t.sellername)-10) whenT.SELLERNAME LIKE 'linkman%>' thensubstr(t.sellername,10,length(t.sellername)-185) else '\N' end sellernamefrom TABLENAME t

这样得到的数据就比较规范了:

由此,可以总结下case-when的语法:

CASE WHEN condition1
THEN sentence1
WHEN condition2
THEN sentence2
...
ELSE
sentenceN
END

除此之外,还可以使用if-then-elif-else。

我一开始以为decode在这里不适用,因为DECODE(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
......
ELSIF 条件=值n THEN
    RETURN(翻译值n)

ELSE
    RETURN(缺省值)
END IF

而我需要“条件 like 值”。

后来查阅资料发现:可以decode结合instr函数来实现“条件like 值”:

instr(str1,str2),意即如果str1中包含str2,返回str2在str1中的位置,否则返回0。

不过不推荐此种方法,因为只有Oracle中有decode 函数,放在其他数据库里就不好使了~

完。

转载于:https://www.cnblogs.com/MasterE/p/6606409.html

Oracle Sql关于case-when,if-then,decode相关推荐

  1. oracle pl/sql 面试,Oracle SQL 面试题(整理)

    1.关于group by表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-10 负 2005- ...

  2. oracle 纵列 转 横列,oracle sql小结(主要讲横列转换的例子)decode 以及case

    --建表 create table kecheng ( id NUMBER, name VARCHAR2(20), course VARCHAR2(20), score NUMBER ); --插入数 ...

  3. oracle查询语句 switch,ORACLE SQL语句中的“SWITCH语句”函数DECODE

    下面这个例子介绍ORACLE SQL Functions对DECODE函数的用法,引自官方文档 SELECT product_id,        DECODE (warehouse_id, 1, ' ...

  4. oracle sql文字列函数,Oracle 数据库SQL中 decode()函数简介

    decode()函数简介: 主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明): 使用方法: Select decode(columnname,值1,翻译值1,值2,翻译值2,.. ...

  5. oracle中sql语句排序,Oracle SQL排序方式与case语句

    我在理解带有case语句的oracle(12c)sql order by子句时遇到困难.我有一张包含以下数据的表格, SELECT DEPT_NO, DEPT_NAME FROM SORTNG_LOG ...

  6. 【SQL】CASE与DECODE

    1. case..when case..when语句用于按照条件返回查询结果,如当我们想把emp表的工资按照多少分成几个不同的级别,并分别统计各个级别的员工数.SQL语句如下: select (cas ...

  7. SQL Fundamentals || Oracle SQL语言

    对于SQL语言,有两个组成部分: DML(data manipulation language) 它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据 ...

  8. Oracle——SQL基础练习

    Oracle--SQL基础练习 题目 1:查询当前用户下的所有表 select *from user_tables; 题目 2:查询雇员表中所有信息 select * from emp; 题目 3:查 ...

  9. oracle sql以及性能调优

    目 录 1.选用适合的ORACLE优化器 2 2.访问Table的方式 3 3.共享SQL语句 3 4.选择最有效率的表名顺序(只在基于规则的优化器中有效) 5 5.WHERE子句中的连接顺序. 6 ...

  10. Oracle SQL到DB2 SQL移植解决方案

    1.Oracel中的decode DB2解决方案:用case条件表达式完成. case两种语法模式: (1)CASE WHEN 条件 THEN 结果1 ELSE 结果2 END (2)CASE 表达式 ...

最新文章

  1. SQLSERVER 设置默认值
  2. python3.8 实现鼠标自动移动_“新生报到”!【移动机器人 HD-1500】负载1500kg,实现了重型货物运输的自动化...
  3. Android进程间通信之socket通信
  4. python 两两组合
  5. [转载] Java中如何在方法中return返回多个值
  6. 【夯实PHP基础】PHP发送邮件(PHPMailer)
  7. MySQL替换函数REPLACE替换字符串方法
  8. HTTP协议格式和header、交互过程
  9. 按是否运行源代码划分: 静态测试和动态测试
  10. Python爬虫实战(6)-爬取QQ空间好友说说并生成词云(超详细)
  11. 我的理想计算机系100字,我的理想作文100字(通用12篇)
  12. 服务器appcrash的问题怎么修复,启动不了,提示问题事件名称:APPCRASH···的解决方案...
  13. 练习题12-外观数列
  14. 编写应用程序,计算两个非零正整数的最大公约数和最小公倍数,要求两个非零正整数从键盘输入。
  15. TasNet端到端模型
  16. 【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现
  17. Linux宝塔不显示验证码,树莓派安装宝塔面板后,在登录时无法显示验证码
  18. java 163 授权码_JavaMail使用163,sina邮箱,发送失败
  19. [汉化主题] Knowhow v1.1.16 – 响应式论坛知识库WordPress主题
  20. 油烟净化器如何判断质量好坏?

热门文章

  1. Slider控件的使用方法
  2. Tensorflow官方文档学习理解 (五)-卷积MNIST
  3. Python-20-异常处理
  4. Linux 安装Zookeeper
  5. sql---字段类型转换,sql获取当前时间,时间处理
  6. 常用排序算法总结(一)
  7. 【转】你有这么一个人么
  8. java8学习之方法引用详解及默认方法分析
  9. RQNOJ 342 最不听话的机器人:网格dp
  10. freeCodeCamp:Seek and Destroy