有哪些不同的方法去逃避单引号('),在SQL LIKE
命令?方法去逃避单引号“类似” SQL命令
一种方法是在每次必须转义单引号时放置两个单引号。
你能提供一些建议吗?
数据库:SQL Server 2005和Oracle 10g
有哪些不同的方法去逃避单引号('),在SQL LIKE
命令?方法去逃避单引号“类似” SQL命令
一种方法是在每次必须转义单引号时放置两个单引号。
你能提供一些建议吗?
数据库:SQL Server 2005和Oracle 10g
你已经有答案了。您必须使用两个单引号:
select * from table where field like '%''something''%'
最好的方法是将参数与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%'
两个单引号是最好的解决方案。
或者,你可以使用一个CHAR(39)
来表示一个单引号字符。
UPDATE Employee SET LastName = 'O' + CHAR(39) + 'Brien'
WHERE ID=1;
CHAR(39)在SQL中不起作用 – Egalitarian 2010-08-18 06:15:35
也有 “Q-报价” 的方法:
select * from mytable where text like q'#%Here's some text%#';
这是可用,因为甲骨文10.2。
我用“#”字符作为分隔符的报价,但您可以使用几乎不会出现的字符串(也有少数例外,如空格字符)的任何字符。
在一个简单的例子,像上面我可能不会这么做。我只是将单引号加倍,但在构建包含大量字符串文字的大型动态SQL语句时,它确实派上用场。
这不是只适用于PL/SQL块吗?我想我们不能在普通的SQL中使用它。 – XING 2016-08-09 12:24:59
谢谢bdukes,我根本没有注意到 – Floyd 2010-08-18 06:53:46