再次发问,问题还是没解决?

Big鹏 2009-08-12 10:19:49

//表中的eventSourceName有:
// 10.181.160.22|s0
// 10.181.160.2|s0

//我传的参数ip为:10.181.160.2,要取10.181.160.2|s0 ,由于 10.181.160.22|s0在前面,先匹配,
// 结果以下语句把 10.181.160.22|s0取出来了,郁闷,请问如何才能取得10.181.160.2|s0?
public DataSet IsHaveEvent(string ip)
{
StringBuilder strSql = new StringBuilder();
strSql.Append(" select top 1 signone from Event ");
//根据ip地址和最靠前的日期取得表中的一条记录;(因为表中相同的IP可能有多条,我只取最近的一条;)
strSql.Append(" where eventSourceName like '%"+ip +"%' order by eventDate desc" );
return DBUtility.DbHelperSQL.Query (strSql .ToString ());



}

...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Big鹏 2009-08-12
  • 打赏
  • 举报
回复

补充:
//表中的eventSourceName有:
// 10.181.160.22|s0
// 10.181.160.2|s0
但是有时也有10.181.160.22 或10.181.160.2 ,也就是说,不是固定的|s0
SQL77 2009-08-12
  • 打赏
  • 举报
回复
CREATE TABLE TBTEST(STRING NVARCHAR(100))
INSERT TBTEST
SELECT '10.181.160.22|s0' UNION
SELECT '10.181.160.2|s0'

--DROP TABLE TBTEST
DECLARE @STR NVARCHAR(20)
SET @STR='10.181.160.2'

select top 1 STRING from TBTEST
where CHARINDEX('.'+@STR+'.','.'+REPLACE(STRING ,'|','.')+'.')>0
STRING
----------------------------------------------------------------------------------------------------
10.181.160.2|s0

(所影响的行数为 1 行)
liangCK 2009-08-12
  • 打赏
  • 举报
回复
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT TOP 1 signone FROM Event ");
strSql.Append("WHERE eventSourceName LIKE '" + ip + "|%'");
strSql.Append(" ORDER BY eventDate DESC");

return strSql.ToString();
SQL77 2009-08-12
  • 打赏
  • 举报
回复
select top 1 signone from Event 
where CHARINDEX('.'+@ID+'.','.'+REPLACE(eventSourceName ,'|','.')+'.')>0 order by eventDate desc
百年树人 2009-08-12
  • 打赏
  • 举报
回复
try

strSql.Append(" where eventSourceName='"+ip +"|s0' order by eventDate desc" );
jwdream2008 2009-08-12
  • 打赏
  • 举报
回复
strSql.Append(" where eventSourceName like '%"+ip +"|%' order by eventDate desc" );

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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