关于sqlServer2005 insert into 里,带条件判断的sql语句怎么写?

wangliang1314 2011-01-21 10:45:40
你好! 表T里有字段Field1,已有值,1,2 我现在想插入新值,插入之前判断一下,这个新值是否已存在,已存在的插入,不存在的则不插入。
比如,插入2时,不让插入,
插入3则可以插入。
这个sql语句怎么写,数据库:SQL SERVER 2005.
...全文
532 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2011-01-21
  • 打赏
  • 举报
回复
select count(*) from tb where sys_id=@id
..
int i=(int)cmd.ExecuteScalar()
或if not exists ...
insert
Crossgate_J 2011-01-21
  • 打赏
  • 举报
回复
写存储过程。。
xphxuser 2011-01-21
  • 打赏
  • 举报
回复
用case when
例子:SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位女生*/
ELSE NULL
END) 男生数,
COUNT (CASE WHEN sex = 2 THEN 1
ELSE NULL
END) 女生数
FROM students GROUP BY grade;


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lanmao100/archive/2010/06/03/5644266.aspx
  • 打赏
  • 举报
回复
/// <summary>
/// 判断添加的角色名称是否重复
/// </summary>
/// <param name="name">角色名称</param>
/// <returns></returns>
public bool Exist(string name)
{
AdoHelper helper = AdoHelper.CreateHelper();
string strsql = "select count(*) from t_role where name='"+name+"'";
int i =int.Parse( helper.ExecuteScalar(strsql).ToString());
if (i > 0)
{
return true;
}
else
{
return false;
}
}
flyerwing 2011-01-21
  • 打赏
  • 举报
回复
when case还是什么来着忘了.看下文档
laowang134 2011-01-21
  • 打赏
  • 举报
回复
这个你自己能想出来吧。。。
q107770540 2011-01-21
  • 打赏
  • 举报
回复
insert前先check数据库是否存在此数据:
string sql="select count(1) from T where Field1=3";
ExectueScale()方法
如果返回值 >0 则不能insert
反之则可insert
summer123813 2011-01-21
  • 打赏
  • 举报
回复
为什么要在sql里面做判断呢?在后台代码作判断不是更好吗?
  • 打赏
  • 举报
回复

在存储过程里面判断

Create Proc IsExists
(
@Value1 nvarchar(200)
)
begin
if not exists( select * from table1 where 字段=@Value1 )
begin
insert into table values(@Value1 )
end
end



这是目前最便捷的方法了




海角的孤星 2011-01-21
  • 打赏
  • 举报
回复
存储过程或者后台吧
t_j_c 2011-01-21
  • 打赏
  • 举报
回复
要在sql中判断的话 存储过程方便点 不过我觉得还是在后台判断比较好的
yubofighting 2011-01-21
  • 打赏
  • 举报
回复
循环遍历
rczjp 2011-01-21
  • 打赏
  • 举报
回复
一个注册的示例

CREATE PROCEDURE RegPro
@Uname varchar(20),@Pwd varchar(30),@IsInclude int output
AS
if(exists(select * from [user] Where UserName=@Uname))
set @IsInclude = 0 --存在
else
begin
set @IsInclude = 1 --不存在
insert into [user](UserName,[PassWord])values(@Uname,@Pwd)
end
GO




conn.Open();
SqlCommand comm = new SqlCommand("RegPro", conn);
comm.CommandType = CommandType.StoredProcedure;//声明为存储过程
//声明并添加参数
SqlParameter UserName = new SqlParameter("@Uname", SqlDbType.VarChar);
SqlParameter PassWord = new SqlParameter("@Pwd", SqlDbType.VarChar);
SqlParameter IsInclude = new SqlParameter("@IsInclude", SqlDbType.Int);
UserName.Value = TextBox1.Text;
PassWord.Value = TextBox2.Text;
comm.Parameters.Add(UserName);
comm.Parameters.Add(PassWord);
comm.Parameters.Add(IsInclude);
//声明为出参
IsInclude.Direction = ParameterDirection.Output;
comm.ExecuteNonQuery();
if (int.Parse(IsInclude.Value.ToString()) == 0)
{
Response.Write("已经存在此用户!");
}
else
{
Response.Write("注册成功!");
}
conn.Close();
rczjp 2011-01-21
  • 打赏
  • 举报
回复
CREATE PROCEDURE [DBO].[InsertTest] 
@UserName varchar(20),
@IsHave int output
AS
if exists(Select ID From tb Where UserName = @UserName)
set @IsHave = 0 --存在
else
。。。
Go

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧