SQL如何根据部分条件查询满足条件的所有数据

qq_27083861 2015-04-02 04:43:57
"select * from equipment where ID= '" + TextBox22.Text + "' and xuhao='"+TextBox1.Text+"' and。。。。。。";
假如表中有ID,xuhao,place,time,company等列,那我要根据任意列查询符合条件的信息,SQL语句该怎么写
...全文
2836 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27083861 2015-04-02
  • 打赏
  • 举报
回复
备注一下,本人用的是C#语言,最好能用C#语言来讲解下,谢谢各位了
Tiger_Zhao 2015-04-02
  • 打赏
  • 举报
回复
你是客户端拼的sql,有选择地拼条件啊。
    Dim sql As String
Dim sqlWhere As String

'输入非空的才拼条件'
sqlWhere = vbNullString
If Len(TextBox22.Text) <> 0 Then
sqlWhere = sqlWhere & " AND ID= '" + TextBox22.Text + "'"
End If
If Len(TextBox1.Text) <> 0 Then
sqlWhere = sqlWhere & " AND xuhao='" + TextBox1.Text + "'"
End If
...

'第一个 AND 替换成 WHERE'
If Len(sqlWhere) <> 0 Then
sqlWhere = " WHERE " & Mid$(sqlWhere, 5)
End If

sql = "select * from equipment " & sqlWhere
qq_27083861 2015-04-02
  • 打赏
  • 举报
回复
程序的TextBox控件内填了内容,则把此内容作为查询条件,如果TextBox1控件里没填内容,则跳过这个控件。后面的TextBox2,TextBox3以此类推,求select语句该怎么写,最好有人写个列子出来
qq_27083861 2015-04-02
  • 打赏
  • 举报
回复
简单点,如果第一个自编号框内我填了1,设备名称为主机,那我查询出来的信息肯定都是编号为1的主机; 那如果第一个自编号框内我没填,只在设备名称框内填了主机,那我查出来的是所有主机,编号可以是1~任意值 如果我第一个自编号框内我填了1,设备名称框没填,那我查出来的是编号为1的所有设备(主机,显示屏,鼠标都有) 关键是这个时候"select * from equipment where ID= '" + TextBox22.Text + "' and name='"+TextBox1.Text+"' and。。。。。。";语句该怎么写呢,如果用AND的话,那我ID框不填,系统就直接报错说查不到数据了啊
jamesrggg 2015-04-02
  • 打赏
  • 举报
回复
给你贴个我的业务,看看
		--定义动态SQL
		Declare @SqlTxt NVarchar(4000),@SqlCon NVarchar(1000)
		Set @SqlTxt = N''
		Set @SqlCon = N''	
		
		--组织动态SQL字符
		Set @SqlTxt = N'Insert Into #TmpStyle' + CHAR(13)
					+ N'Select Distinct 0,A.SystemID,A.StyleID,A.StyleNo,A.StyleName,A.StandardStyleNo,0,A.StyleTypeID,N'''',N'''',A.CreatedDate,DATEADD(Day,A.CreatedDate,N''2010-01-01''),0 ' + CHAR(13)
					+ N'	From MainStyle A With(NoLock) ' + CHAR(13)
					+ N'	Inner Join StyleEdition B With(NoLock) On B.SystemID = A.SystemID ' + CHAR(13)
		
		/***** 处理条件语句生成 *****/
		--款号条件处理
		If @StyleNo != N''
		Begin
			If @SqlCon = N'' Set @SqlCon = N'	Where ' Else Set @SqlCon = @SqlCon + N'		And '
			Set @SqlCon = @SqlCon + N' (A.StyleNo Like ''%' + @StyleNo + N'%'')'  + CHAR(13)
		End
		
		--款名条件处理
		If @StyleName != N''
		Begin
			If @SqlCon = N'' Set @SqlCon = N'	Where ' Else Set @SqlCon = @SqlCon + N'		And '
			Set @SqlCon = @SqlCon + N' (A.StyleName Like ''%' + @StyleName + N'%'')' + CHAR(13)
		End
		
		--主款号条件处理
		If @StandardStyleNo != N''
		Begin
			If @SqlCon = N'' Set @SqlCon = N'	Where ' Else Set @SqlCon = @SqlCon + N'		And '
			Set @SqlCon = @SqlCon + N' (A.StandardStyleNo = ''' + @StandardStyleNo + N''')' + CHAR(13)
		End
		
		--款式类别条件处理
		If @StyleTypeID > 0
		Begin
			If @SqlCon = N'' Set @SqlCon = N'	Where ' Else Set @SqlCon = @SqlCon + N'		And '
			Set @SqlCon = @SqlCon + N' (A.StyleTypeId = ' + CONVERT(NVarchar,@StyleTypeID) + N')' + CHAR(13)
		End
		
		--修改时间处理条件处理
		If @MFDate > 0 Or @MTDate > 0
		Begin
			If @SqlCon = N'' Set @SqlCon = N'	Where ' Else Set @SqlCon = @SqlCon + N'		And '
			Set @SqlCon = @SqlCon + N' (DATEDIFF(DAY,N''2010-01-01'',B.ModifiedDate) Between ' + CONVERT(NVarchar,@MFDate) + N' And ' + CONVERT(NVarchar,@MTDate) + N')' + CHAR(13)
		End
		
		--状态条件处理
		If @SqlCon = N'' Set @SqlCon = N'	Where ' Else Set @SqlCon = @SqlCon + N'		And '
		Set @SqlCon = @SqlCon + N' (A.State = ' + CONVERT(NVarchar,@State) + N')' + CHAR(13)
		
		Set @SqlTxt = @SqlTxt + @SqlCon
		
		Print @SqlTxt
		Exec(@SqlTxt)
还在加载中灬 2015-04-02
  • 打赏
  • 举报
回复
如果你确定那是NULL 那么还可以解决的 select * from equipment where ID= ISNULL('" + TextBox22.Text + "',ID) and xuhao=ISNULL('"+TextBox1.Text+"',xuhao) and 或者是用CASE判断为空再处理 但是,这样虽然方便却不符合查询规范 你还是拼接查询条件吧,不需要那个条件,那个就不带入查询,那样才效率
唐诗三百首 2015-04-02
  • 打赏
  • 举报
回复
用动态SQL实现, 逐个框判断是否有写,如有则tsql=tsql+" and [字段]='" + TextBox.Text + "' '
qq_27083861 2015-04-02
  • 打赏
  • 举报
回复
简单的说就是所有TextBox框内的条件都要满足,如果是NULL值得话就跳过这个框,请问SQL语句该怎么写
qq_27083861 2015-04-02
  • 打赏
  • 举报
回复
在任意框内填写相关条件,最终找出所有符合我填写的条件的数据 如果用select * from equipment where ID= '" + TextBox22.Text + "' and xuhao='"+TextBox1.Text+"' and。。。。。。";语句的话,如果我ID那个框内不写,NULL值在逻辑运算中就自动算FALSE了,所以AND肯定不行
qq_27083861 2015-04-02
  • 打赏
  • 举报
回复
比如说,我不知道ID和place,我要根据time和company来查询所有满足条件的信息,另外附上页面的截图

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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