sqlServer,oracle中case关键字的用法
在写SQL时,有时要根据已有的列值构造新的列值,这时就要用到的SQL中的case关键字。如下所示查询负责人信息表(T_MS_CustomerCrmInfoDutyPerson)中的是否是主要负责人(isMainDuty)字段,但是这个字段的值是以枚举的方式存储的,存储0表示是否,1表示是,否则表示未判断。这时直接查询出的值不是自己需要的值,可以用case关键字重新构建列值。
select case
when cfdutystate=0 then '否'
when cfdutystate=1 then '是'
else null
end as isMainDuty
from T_MS_CustomerCrmInfoDutyPerson
注意点:
1,以case开头,以end结尾
2,when后跟条件分支中,then后为显示结果
3,else为除此之外的默认情况,类似于java的switch case的default,可以不加
4,Oracle中end后跟别名或者sqlserver中语法如下:
isMainDuty =case
when cfdutystate=0 then '否'
when cfdutystate=1 then '是'
else null
end
除此之外,case也可以用到group by语句中以根据需要实现灵活的分组操作,如下所示的列子:
SELECT
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
&n
相关文档:
(红色部分为修改内容)
第一步,在磁盘下建一个文件夹,注意不要有空格,否则oracle安装时会出现警告。
第二步,用于进入安装界面后,检测环境在安装文件夹里搜索 "refhost.xml",共2个文件。
用记事本打开,看到
<!--Microsoft Windows vista-->
<OPERATING_SYSTEM>
&l ......
大致分为三部份,1.SQL,2.ERP本身,3.本机
1.如果是SQL导出时出现,乱码可以通过修改NLS_LANG,来避免乱码,
繁体修改成:TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5
简体修改成: SIMPLIFIED CHINESE_CHINA.ZHS16GBK
英文就不用说了!!
2.如果是ERP export 时出现乱码,可以通过设置profile来设置FND: NATIVE CLIENT ENC ......
由于之前学习oracle的时候比较随意,看书也是比较少去深入思考原理,而从前几天决定要重新燃起oracle的学习激情后,我又重新的从基础学起,此时我学oracle的心态也比以前好很多了,现在是努力的一点一点去啃了,即使很花时间,但我想正是通过今天我这样的埋头苦读才会换来有朝一日在oracle方面的质的飞跃的。
  ......
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y
CITY VARCHAR2(20) Y
SQL> select * from test;
COUNTRY CITY
-------------------- --------------------
中国 台北
中国 香 ......
商业和数据库很多时候必须跨时区工作,从9i开始,oracle环境开始有了时区意识,通过指定数据库的时区和使用TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE数据类型来实现该功能。
TIMESTAMP WITH TIME ZONE不会存储数据库时区,但是有一个指示用来说明该时间所使用的时区。TIMESTAMP WITH LOCAL TIME ZONE会同 ......