我正在使用简单的解决方案来引用带引号的字符串中的文本。
例如:
DATEDIFF(Minutes, Lead.WhenCreated, @Today)
需要更新到
DATEDIFF(Minutes, Lead.WhenCreated, '@Today')
如果源字符串已经包含令牌的引号,则不应进行任何更改。字符串中可能有多个标记,我不知道标记值是什么 - 只是说它将以@字符开头。
我的环境是Visual Studio C#2008。
希望有些人可以提供帮助。感谢。
答案 0 :(得分:1)
resultString = Regex.Replace(subjectString, @"(@\b\w+\b)", "'$1'");
你可以使用这个。它会找到所有以@开头的单词,并为它们添加引号。
编辑:
resultString = Regex.Replace(subjectString, @"((?<!')@\b\w+\b)", "'$1'");
考虑已经引用过的字符串。
答案 1 :(得分:0)
看起来你正在用C#代码构建一个SQL语句,然后自己替换参数。你可能最好使用这种方法...
DataReader rdr;
using (SqlConnection con = new SqlConnection(MY_CONNECTIONSTRING)
{
con.Open();
string sql = "SELECT DATEDIFF(Minutes, Lead.WhenCreated, @Today) FROM tbl";
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.Parameters.AddWithValue("@Today", datDateValue);
rdr = cmd.ExecuteReader();
}
}
此方法更安全,可防止恶意SQL注入。
答案 2 :(得分:0)
模式:
(?<!')(@\w+)
的更换:
'$1'