语句目的是,查找学生表中的空子段,将其写记录在一个student_error表中。
student表中的字段 name, age
student_error表中 name, null_field
sql语句
insert into student_error
select name,
CASE WHEN name is null THEN 'name,'
    WHEN ltrim(rtrim(name)) = '' THEN 'name,'
    ELSE ''
END 
CASE WHEN age is null THEN 'age,'
WHEN ltrim(rtrim(age)) = '' THEN 'age,'
ELSE ''
END 
null_field 
from student
查寻student表,如果当前记录的name值为空就把'name'写入null_field,如果age为空,就把'age'写入null_field错误:提示case关键字附近出现错误
如果:
insert into student_error
select name,
CASE WHEN name is null THEN 'name,'
    WHEN ltrim(rtrim(name)) = '' THEN 'name,'
    ELSE ''
END 
null_field 
from student
则正常执行。所以问题是在第二个case when上,希望大家帮忙 

解决方案 »

  1.   

    insert into student_error 
    select name, 
    CASE WHEN  isnull(ltrim(rtrim(name)),'')='' THEN 'name' ELSE '' END +
    CASE WHEN isnull(ltrim(rtrim(age)),'')='' THEN 'age' ELSE '' END  AS 'null_field' 
    from student 
      

  2.   

    1L正解。。
    错误有三:
    1. 每个CASE需要条件合并
    2. 2个CASE需要+号拼接到一个字段
    3. 别名加引号因为是字符串
      

  3.   

    insert into student_error 
    select name, 
    CASE WHEN name is null THEN 'name,' 
        WHEN ltrim(rtrim(name)) = '' THEN 'name,' 
        ELSE '' 
    END +
    CASE WHEN age is null THEN 'age,' 
    WHEN ltrim(rtrim(age)) = '' THEN 'age,' 
    ELSE '' 
    END as
    null_field 
    from student 
      

  4.   

    把ltrim(rtrim(name))改写成Trim(name),好像一样的效果,name的前后空格都去掉了。
      

  5.   

    那么,表student_error 应该是2个字段,
    一个是name,一个是null_field,其值要么是nameage,要么就是''