一张表中两个字段确定一行数据的SQL语句 试了SELECT *FROM Controller WHERE parent='%s' AND addr='%s',不行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SELECT *FROM Controller WHERE parent='%s' AND addr='%s'查詢一行 加%什麼意思 你用%是想模糊吗模糊要用LIKE,但是用LIKE很有可能匹配出多条 我在mfc使用ADO访问数据库,sqlcmd.Format("SELECT *FROM Controller WHERE parent='%s' and addr='%s'",addr1,addr2); [code=sql]SELECT *FROM Controller WHERE parent LIKE '%s' AND addr LIKE '%s'[code]等号是完全相等,估计你是找包含吧,要用 LIKE(虽然你贴图中没有以s结尾的数据)。 查询到某一行,修改forbidden的值 匹配用Like '%s'=是必须字段值与条件全相等 源代码//************打开表格********* m_pRecordset.CreateInstance(__uuidof(Recordset)); try //parent,addr,forbidden,anal0,anal1,anal2,anal3,ratnum0,ratnum1,ratnum2,ratnum3,ratpow0,ratpow1,ratpow2,ratpow3,input,output FROM Controller { sqlcmd.Format("SELECT * FROM Controller WHERE (parent='%s')+(addr='%s')",addr1,addr2); m_pRecordset->Open(_variant_t(sqlcmd),_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); } catch(_com_error& e) { MessageBox(e.Description(),"提示",0); } //************修改数据********* try { if(!m_pRecordset->BOF) { if(forbid) { m_pRecordset->PutCollect("forbidden", _variant_t("1111")); } else { m_pRecordset->PutCollect("forbidden", _variant_t("0000")); } m_pRecordset->PutCollect("ratnum0", _variant_t(ratnum)); m_pRecordset->PutCollect("ratnum1", _variant_t(ratnum)); m_pRecordset->PutCollect("ratnum2", _variant_t(ratnum)); m_pRecordset->PutCollect("ratnum3", _variant_t(ratnum)); m_pRecordset->PutCollect("ratpow0", _variant_t(ratpow)); m_pRecordset->PutCollect("ratpow1", _variant_t(ratpow)); m_pRecordset->PutCollect("ratpow2", _variant_t(ratpow)); m_pRecordset->PutCollect("ratpow3", _variant_t(ratpow)); m_pRecordset->Update(); g_smsg="\""+addr1+":"+addr2+"\""+"数据添加成功"; } } catch(_com_error& e) { AfxMessageBox(e.Description()); } 模糊搜索用like '%filedValue%' 加断点,看 sqlcmd 是什么内容。 这张表特点是没有主键,只有根据parent,addr同时符合比如“parent=h000和addr=01”时才能确定一行数据,怎么用SQL语句写出来???????????????????????????????????????? 查询条件和是否有主键没有关系。先把 sqlcmd 打出来;再全表查询,结果用csv的文本格式。检查下你认为应该选中的记录,很可能是末尾的空格差异,导致看起来是匹配的实际是不符合条件的。 那你的format里面的写法不对撒。 按楼主的意思,假如要查询到第一行数据select * from Controller WHERE parent='h000' AND addr='01' select * from (SELECT ROW_NUMBER()OVER(PARTITION BY a,b ORDER BY a)mp,* FROM tabname)WHERE mp=1 请教SQL查询 求一个字符串转换为asc的函数 怎麼求兩個datetime類型數據的時間差 查询表最后 n 条记录的SQL 语句怎么写? 关于触发器中的回滚问题 execute执行字符串 log explorer 使用中碰到问题 我新手,有人能给解释一下,错在哪里了吗? 产品销售月报表(显示样式:产品名,1日销售额,...,31日销售额,总额) 如何区分是汉字还是字母(1个字节和2个字节)? 为何数据库表的保留空间这么庞大? 求大神语句
查詢一行 加%什麼意思
模糊要用LIKE,但是用LIKE很有可能匹配出多条
等号是完全相等,估计你是找包含吧,要用 LIKE(虽然你贴图中没有以s结尾的数据)。
匹配用Like '%s'=是必须字段值与条件全相等
源代码//************打开表格*********
m_pRecordset.CreateInstance(__uuidof(Recordset));
try //parent,addr,forbidden,anal0,anal1,anal2,anal3,ratnum0,ratnum1,ratnum2,ratnum3,ratpow0,ratpow1,ratpow2,ratpow3,input,output FROM Controller
{
sqlcmd.Format("SELECT * FROM Controller WHERE (parent='%s')+(addr='%s')",addr1,addr2);
m_pRecordset->Open(_variant_t(sqlcmd),_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); }
catch(_com_error& e)
{
MessageBox(e.Description(),"提示",0);
}
//************修改数据*********
try
{
if(!m_pRecordset->BOF)
{
if(forbid)
{
m_pRecordset->PutCollect("forbidden", _variant_t("1111"));
}
else
{
m_pRecordset->PutCollect("forbidden", _variant_t("0000"));
} m_pRecordset->PutCollect("ratnum0", _variant_t(ratnum));
m_pRecordset->PutCollect("ratnum1", _variant_t(ratnum));
m_pRecordset->PutCollect("ratnum2", _variant_t(ratnum));
m_pRecordset->PutCollect("ratnum3", _variant_t(ratnum)); m_pRecordset->PutCollect("ratpow0", _variant_t(ratpow));
m_pRecordset->PutCollect("ratpow1", _variant_t(ratpow));
m_pRecordset->PutCollect("ratpow2", _variant_t(ratpow));
m_pRecordset->PutCollect("ratpow3", _variant_t(ratpow)); m_pRecordset->Update();
g_smsg="\""+addr1+":"+addr2+"\""+"数据添加成功";
}
}
catch(_com_error& e)
{
AfxMessageBox(e.Description());
}
先把 sqlcmd 打出来;再全表查询,结果用csv的文本格式。
检查下你认为应该选中的记录,很可能是末尾的空格差异,导致看起来是匹配的实际是不符合条件的。
WHERE mp=1