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,否则返回空字符。