在SQL'LIKE'命令中转义单引号的方法

时间:2010-08-17 15:48:35

标签: sql sql-server-2005 mysql oracle10g

SQL LIKE命令中ESCAPE单引号(')的各种方法有哪些?

一种方法是在必须转义单引号时放两个单引号。

你们可以提出一些建议吗?

数据库:SQL Server 2005和Oracle 10g

4 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:2)

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

like(C#with 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%'

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:1)

还有“Q-quote”方法:

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

自Oracle 10.2以来可以使用。

我使用'#'字符作为引号分隔符,但您几乎可以使用任何不会出现在字符串中的字符(有一些例外,例如空格字符)。

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