模糊查询奇怪问题

treehome 2003-09-25 10:35:15
模糊查询奇怪问题
我的代码:
str = "姓名 like @Name";
myDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.Char, 20));
myDataAdapter.SelectCommand.Parameters["@Name"].Value = "%" + txtName.Text.Trim().ToString() + "%";

查询结果
当name=陈, 结果有:陈大,陈中
但数据中还有一个"陈小明"未能显示出来
当name=陈小,结果是:陈小明
当name=明,无结果
当name=小明,结果是:陈小明
好奇怪啊,是点解啊?
...全文
80 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xaodoudou 2004-03-26
  • 打赏
  • 举报
回复
to mmkk:
try:
myDataAdapter.SelectCommand.Parameters["@Name"].Value = "'%" + txtName.Text.Trim().ToString() + "%'";
我试了,构造出来的语句 like '%XXX%' 在SQL分析器中是可以运行的
但在 ASP.net C# SqlDataReader 对像中招行是不能返回结果的
而用 like %XXX% 即去了两过的分号后是可以的,
微软可能现在自己都不知道该用哪一个了
xuhong12345678@sina.com
ahui_net 2003-12-25
  • 打赏
  • 举报
回复
select count(*) from _Human_Person where PersonName like '%王%'


declare @value varchar(50)
set @value = '王'
select count(*) from _Human_Person where PersonName like '%'+ @value +'%'

结果一样

select count(*) from _Human_Person where PersonName like '%王%'


declare @value char(50)
set @value = '王'
select count(*) from _Human_Person where PersonName like '%'+ @value +'%'

结果不一样
sunny6281 2003-12-25
  • 打赏
  • 举报
回复
何必用参数阿
sub BindGrid(strFilter as string,grid as datagrid,conn as oleconn)
dim sql as string = "select * from tb"
dim adp as oleDataAdapter(sql,new oledbconnection("your connstr"))
dim dt as new datatable()
adp.fill(dt)
dt.defaultview.rowfilter=strfilter
grid.datasource=dt.defaultview
end sub

这样直接就实现查询了
ahui_net 2003-12-25
  • 打赏
  • 举报
回复
还有问题

str = "姓名 like '%'+ @Name +'%'";
myDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@Name", SqlDbType.varchar, 20));
myDataAdapter.SelectCommand.Parameters["@Name"].Value = txtName.Text.Trim().ToString()
ahui_net 2003-12-25
  • 打赏
  • 举报
回复
问题出在SqlDbType.Char
试试用varchar
谜斯特段 2003-12-25
  • 打赏
  • 举报
回复
什么数据库啊?
pcdogyu 2003-12-25
  • 打赏
  • 举报
回复
Dim strsql As String
If dl1.SelectedItem.Text = "" Or dl1.SelectedItem.Text = "全部" Then
strsql = "select * from group_name where username like @aa "
Else
strsql = "select * from group_name where username like @aa and groupname=@bb"
End If

Dim adp As New SqlDataAdapter(strsql, conn)
adp.SelectCommand.Parameters.Add("@aa", SqlDbType.Char).Value = "%" & tb.Text & "%"
adp.SelectCommand.Parameters.Add("@bb", SqlDbType.Char).Value = dl1.SelectedItem.Text
adp.SelectCommand.ExecuteNonQuery()
Dim ds As New DataSet
adp.Fill(ds, "searchdg")
dg.DataSource = ds.Tables("searchdg")
dg.DataBind()
yaotiebing 2003-09-26
  • 打赏
  • 举报
回复
你可以先不用参数测试一下

try:
myDataAdapter.SelectCommand.Parameters["@Name"].Value = "'%" + txtName.Text.Trim().ToString() + "%'";
如果你的字段字符串类型的一定要用这种格式
yaotiebing 2003-09-26
  • 打赏
  • 举报
回复
检查一下txtName.Text.Trim().ToString() 的值有没有问题!
yaotiebing 2003-09-26
  • 打赏
  • 举报
回复
当name=陈小明,结果是什么?
treehome 2003-09-26
  • 打赏
  • 举报
回复
HELP!!!!
treehome 2003-09-26
  • 打赏
  • 举报
回复
HELP!!!!
treehome 2003-09-26
  • 打赏
  • 举报
回复
当name=陈小明,结果是陈小明

myDataAdapter.SelectCommand.Parameters["@Name"].Value = "'%" + txtName.Text.Trim().ToString() + "%'";
试过了,还是不行的
我发现%号只是当一个字符,所以就这样了,为什????
resp 2003-09-25
  • 打赏
  • 举报
回复
建议在存储过程中实现模糊查询,表在程序中控制
set @str = 'select ........ from ... where xx like ' + char(39) + '%' + @name + '%' + char(39)
exec @str
treehome 2003-09-25
  • 打赏
  • 举报
回复
这样试过了,更加不行啊
mmkk 2003-09-25
  • 打赏
  • 举报
回复
try:
myDataAdapter.SelectCommand.Parameters["@Name"].Value = "'%" + txtName.Text.Trim().ToString() + "%'";
treehome 2003-09-25
  • 打赏
  • 举报
回复
有人可以帮我吗,我想在程序上写模糊查询啊,这个问题不难吧

62,046

社区成员

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

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

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

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