在我的数据库中有一个包含特殊字符的字符串'但是当我尝试获取它时会出现一个错误,表示字符串termaination例如:
String temp=a'bc
SELECT * FROM table where name like 'temp%'
答案 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