问题描述
- 这种情况下,SQL语句怎么写?急急急! 2C
- 我有表table1 其中有字段 name 和 address。
这两个字段的值不可能相等,而且不同行它们的值也不会相等。
现在要实现一个功能:
我传入属于这两个字段的任意一个值,如果这个值与name或者address匹配。则将name或者address清空。
例如:name是 xiaoming,address 是beijing
name是xiaohong,address 是shanghai
我要求输入xiaohong,就将xiaohong清空。输入beijing就将beijing清空
解决方案
一定要在sql中写吗?这种一般是在代码里处理的吧。
一定要在sql中写的话,连续执行两个语句就可以了吧?
既然你输入的值不可能在两个字段里重复出现,就直接执行下面这两个语句啊。
update table set name = """" where name = #data#;
update table set address = """" where address = #data#;
解决方案二:
用or关键字呀,delete FROM table1 where name='' or address=''
解决方案三:
begin
if exists ( select * from tablename where name=@str)
begin
update tablename set name='' where name=@str
end
else
begin
if exists ( select * from tablename where address=@str)
begin
update tablename set name='' where address=@str
end
else
begin
select '没有匹配' as result
end
end
end
---- 其中@str是你传入的变量,tablename是你的表名
解决方案四:
可以用case when语法,判断哪个字段和值相等,就设置哪个字段为空
解决方案五:
急急
解决方案六:
update table
set name = (case when name = #data# then '' else name end)
address = (case when adress = #data# then '' else address end)
where ...