oracle数据库的case方法的简单使用

  case可以根据查询出来的列值选择性的改变值。举个栗子,有一个简单的表如学生表,学生表有个性别字段,但是这个字段类型时char(1)类型的,而想要取出的性别是中文显示的对应关系如下:(1:男,2:女,3:其他)这样的情况可以使用case 解决:现在假设要取出student表中的name,id,gender,(gender字段使用对应的中文替代):

SELECT
    st.NAME,
    st.NAME,
CASE
    st.gender 
    WHEN '1' THEN
    '' 
    WHEN '2' THEN
    '' 
    WHEN '3' THEN
    '其他' 
END 
FROM
    student st

 此外case when还有个很好的用途,就是可以在某个字段为空时取另外的字段

如下:

SELECT
    t.username AS name,
CASE
    
    WHEN ( t.alias_name IS NULL OR length( t.alias ) = 0 ) THEN
    t.username 
    WHEN ( t.alias_name IS NOT NULL AND length( t.alias_name ) > 0 ) THEN
    t.alias_name ELSE '' 
    END AS aliasname 
FROM
    forum_user t 
WHERE
    user_grade = 'normal'

上面SQL作用时,forum_user表中取user_grade为normal的username、alias_name字段。当ailas_name为空或者空字符长度为0时取username,当alias_name不为空且字符长度大于0时取alias_name,否则返回空字符。

posted @ 2019-11-22 20:11  落楝花  阅读(2170)  评论(0编辑  收藏  举报

乘兴而来