【发布时间】:2011-03-31 01:55:52
【问题描述】:
【问题讨论】:
标签: sql sql-server-2005 mysql oracle10g
【问题讨论】:
标签: sql sql-server-2005 mysql oracle10g
你已经有了答案。您必须使用两个单引号:
select * from table where field like '%''something''%'
【讨论】:
两个单引号是最好的解决方案。
或者,您可以使用CHAR(39) 来表示单引号字符。
UPDATE Employee SET LastName = 'O' + CHAR(39) + 'Brien'
WHERE ID=1;
【讨论】:
最好的方法是将参数与 ADO 或 ADO.NET 绑定。
喜欢(在 C# 中使用 ADO.NET 的示例):
SqlCommand x = new SqlCommand(sqlConnection, @"select * from table where col like '%'+@para1+'%'");
x.parameters.add(new SqlParameter("@para1",sqltype.varchar,100)).value = "this is a' test";
在SQL Server 2005 中,如果您不想绑定,则使用双单引号 ('') 转义单引号 ('):
select * from table where col like '%this is a'' test%'
【讨论】:
还有“Q-quote”方法:
select * from mytable where text like q'#%Here's some text%#';
这从 Oracle 10.2 开始可用。
我使用“#”字符作为引号分隔符,但您几乎可以使用任何不会出现在字符串中的字符(也有一些例外,例如空格字符)。
在像上面这样的简单示例中,我可能不会这样做。我只是将单引号加倍,但在构建包含大量字符串文字的大型动态 SQL 语句时确实会派上用场。
【讨论】: