瀚高数据库: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 ;