我的字符串包含特殊字符'然后应该如何获取。

时间:2011-07-28 12:59:59

标签: sql-server-2005

在我的数据库中有一个包含特殊字符的字符串'但是当我尝试获取它时会出现一个错误,表示字符串termaination例如:

String temp=a'bc
SELECT * FROM table where name like 'temp%'

4 个答案:

答案 0 :(得分:1)

如果从客户端代码(例如c#)调用此方法,则使用参数化查询:

string temp = "a'bc";
string sql = "SELECT * FROM table WHERE name LIKE @Name + '%'";

using (var cn = new SqlConnection(" connection string here "))
using (var cmd = new SqlCommand(sql, cn))
{
   cmd.Parameters.Add("@Name", SqlDbTypes.NVarChar, 50).Value = temp;

   cn.Open();
   using (var rdr = cmd.ExecuteReader())
   {

       //do something with your data reader
   }
}

答案 1 :(得分:0)

您需要将单引号加倍,例如:a''bc

然后整个查询变为

SELECT * FROM table where name like 'a''bc%'

N.B。如果相关模式来自用户输入,请注意SQL injection attacks(另请参阅xkcd)。

答案 2 :(得分:0)

在T-SQL中,您可以通过将引号放两次来引用引号中的引号,例如:

SELECT * FROM table where name like 'a''bc%'

答案 3 :(得分:0)

您还可以使用参数化查询而不是内联SQL