2010-08-17 54 views

回答

9

你已经有答案了。您必须使用两个单引号:

select * from table where field like '%''something''%' 
2

最好的方法是将参数与ADO或ADO.NET绑定。

赞(在C#中使用ADO.NET为例):

SqlCommand x = new SqlCommand(sqlConnection, @"select * from table where col like '%'[email protected]+'%'"); 
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%' 
+0

谢谢bdukes,我根本没有注意到 – Floyd 2010-08-18 06:53:46

2

两个单引号是最好的解决方案。

或者,你可以使用一个CHAR(39)来表示一个单引号字符。

UPDATE Employee SET LastName = 'O' + CHAR(39) + 'Brien' 
WHERE ID=1; 
+0

CHAR(39)在SQL中不起作用 – Egalitarian 2010-08-18 06:15:35

1

也有 “Q-报价” 的方法:

select * from mytable where text like q'#%Here's some text%#'; 

这是可用,因为甲骨文10.2。

我用“#”字符作为分隔符的报价,但您可以使用几乎不会出现的字符串(也有少数例外,如空格字符)的任何字符。

在一个简单的例子,像上面我可能不会这么做。我只是将单引号加倍,但在构建包含大量字符串文字的大型动态SQL语句时,它确实派上用场。

+0

这不是只适用于PL/SQL块吗?我想我们不能在普通的SQL中使用它。 – XING 2016-08-09 12:24:59