将'Top 100'字符串替换为其他字符串值

时间:2015-02-23 07:48:23

标签: c# sql .net

SELECT TOP 100 * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK)  ORDER BY LogTime DESC 

我想替换查找'TOP 100'字符串并将其替换为'TOP 200'或任何其他值。

你能告诉我如何在C#中做到这一点吗?

8 个答案:

答案 0 :(得分:2)

听起来好像你只是想用另一个字符串替换部分字符串,如:

string sql = "SELECT TOP 100 * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK)  ORDER BY LogTime DESC";
sql = sql.Replace("TOP 100", "TOP 200");

如果数字是动态的,你想用另一个替换它,你可以使用正则表达式:

string sql = "SELECT TOP 100 * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK)  ORDER BY LogTime DESC";
string pattern = @"\bTOP\b *(\d+)";
sql = Regex.Replace(sql, pattern, m => "TOP 200");

答案 1 :(得分:1)

如果您在c#代码中编写查询,可以使用:

int topCount=1000;

string query= "SELECT TOP ("+i.toString()+") * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK) ORDER BY LogTime DESC" 

但是如果您想将参数发送到SP,那么您可以使用:

Declare @i int=1000;

 SELECT TOP (@i) * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK)  ORDER BY LogTime DESC

答案 2 :(得分:0)

DECLARE @topval int=100

SELECT TOP @topval * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK) ORDER BY LogTime DESC 

答案 3 :(得分:0)

你想使用字符串替换功能。string replace function

答案 4 :(得分:0)

如果您没有使用存储过程,可以在C#中连接命令文本中的限制:

int toplimit = 200;

cmd.CommandText="SELECT TOP " + toplimit.ToString() + " * FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK)  ORDER BY LogTime DESC";

答案 5 :(得分:0)

我认为它应该像这个一样简单

    private string GetSql(int maxRecords)
    {
        string statement = "SELECT TOP " + maxRecords + " FROM DSMS_Log.dbo.LoggingDetail WITH(NOLOCK)  ORDER BY LogTime DESC ";

         return statement;
    }

您还可以修改参数并更改SQL查询。

答案 6 :(得分:0)

我正在使用正则表达式。因为我认为这是在一个陈述中获得所有变化的最佳方式。

string oldString = "Select top 500 from wherever";
string newLimit = "top 20";
string result = System.Text.RegularExpressions.Regex.Replace(oldString , "TOP (\\d)+",newLimit , System.Text.RegularExpressions.RegexOptions.IgnoreCase );

所以放入你的旧字符串,替换任何" TOP x"在我的示例中以newLimit给出的另一个版本的字符串。

答案 7 :(得分:0)

对于C#解决方案,您最好使用参数而不是字符串操作。

就像这样:

int count = 200;
var sql = string.Format("SELECT TOP {0} FROM [Rest_Of_Your_Query]", count);

如果您将使用参数,您将更容易知道何时更改(如果您只想在值为100时更换)和哪个值(200,300无论如何)。

对于SQL解决方案,请查看@Ganesh_Devlekar

的答案