27,580
社区成员
发帖
与我相关
我的任务
分享
//表中的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 ());
}
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 行)
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();
select top 1 signone from Event
where CHARINDEX('.'+@ID+'.','.'+REPLACE(eventSourceName ,'|','.')+'.')>0 order by eventDate desc
strSql.Append(" where eventSourceName='"+ip +"|s0' order by eventDate desc" );