【无标题】

瀚高数据库:SQL的用法记录

欢迎使用Markdown编辑器

SQL中的数据类型转换。

第一 数据类型转换

(一)cast类型转换

cast(表达式 as 数据类型)
cast (字段 as varchar )
cast (字段 as int)

(二)convert类型转换

(瀚高数据库貌似不能用,目前还没测试出来怎么使用)
convert(数据类型,表达式)

select 100.0 + convert(int,‘1000’)-- 1100.0 默认把字符串转换成整形。

3、select * from student order by convert (int,bid) desc --bid列按照降序来排列,bid是varchar类型。

4、print convert(varchar(10),getdate(),120) --日期转换varchar(10)表示显示的字符长度,120表示style,可以在SSMS 帮助中查看详情。

5、cast不可以转换日期类型,convert可以通用。

(三)::做类型转换

select  relname as TABLE_NAME ,
                cast (
                    obj_description (
                        relfilenode ,
                        'pg_class'
                    ) as varchar
                ) as comment ,
                pg_size_pretty (
                    pg_relation_size (
                        relname :: text
                    )
                ) as size ,
                pg_relation_size (
                        ***relname :: varchar***
                    ) as sizes,
                reltuples as counts
            from
                pg_class
            where
                relkind = 'r'
                and relnamespace = (
                    select
                        oid
                    from
                        pg_namespace
                    where
                        nspname = 'ythpt'
                )
            order by
                counts desc

eg。

SELECT (case when res_blzt =‘3’ then ‘审批完成’

        when res_blzt = '2' then '办理中'

        else '未审批'  end ) :: VARCHAR as 审批状态 from res_cata ;

第二 case when then else end语句的用法

(一)简单case函数用法—不添加搜索条件

        SELECT (case  res_blzt 
        when  '3' then '审批完成'

        when  '2' then '办理中'

        else '未审批' end) as 审批状态  from res_cata ;

(二)添加搜索条件的case函数
可以根据表中的数据添加搜索条件来判断显示的值

      SELECT 
      (case
        when res_blzt ='3' then '审批完成'
        when res_blzt = '2' then '办理中'
        else '未审批'  end ) :: VARCHAR as 审批状态 from res_cata ;

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。
还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。如下:最后一类的res_blzt=1的时候,未审批的状态不会显示

SELECT (case when res_blzt in('1','3') then '审批完成' 
when res_blzt ='3' then '审批22'
            when res_blzt = '2' then '办理中'
            else '未审批'  end )  from res_cata ;

case搜索函数可以 在查询的时候根据已有的列,自成一列展示。

SELECT (case when res_blzt='3' then '审批完成' 

            when res_blzt = '2' then '办理中'

            else '未审批'  end ) as 审批状态,res_blzt  from res_cata ;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值