语句目的是,查找学生表中的空子段,将其写记录在一个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上,希望大家帮忙
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上,希望大家帮忙
解决方案 »
- 帮忙看看这条SQL语句哪里不对
- 定义一个整数,并按整数大小生成一个数据表,表的行数为整数,其中一列为行号
- 要出人命的问题,数据库没有好的备份。如何修复啊
- 请教oracle union 问题
- [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序.急急急!!!!!!!!!!!!!1
- 问一个关于级联更新的问题
- select 问题
- 请问这个触发器怎么写啊。(新手问)
- 高分求解:怎样在程序运行时进行初始化SQL SERVER数据库?
- sqlserver2005存储过程问题,急
- 通过命令行参数安装 SQL 2005 设置哪个参数
- SQL查询时,子表两行数据怎么显示为一行?如下:
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
错误有三:
1. 每个CASE需要条件合并
2. 2个CASE需要+号拼接到一个字段
3. 别名加引号因为是字符串
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
一个是name,一个是null_field,其值要么是nameage,要么就是''