有没有办法在.net中使用ODBC连接使用LIKE语句?我已经尝试了我能想到的一切,但我总是得到一个SQL异常。
SELECT field FROM table WHERE fieldName LIKE '%SOME_STRING%';
string sql = "SELECT field FROM table WHERE fieldName like '%?%';
我正在使用Sybase SQL Anywhere 11。
答案 0 :(得分:3)
只要您连接的数据库支持LIKE语句,就可以使用LIKE语句。无论你是否使用ODBC都不应该与它有任何关系。
需要注意的是,不同的数据库使用不同的通配符和不同的语法。 (例如,MS Access使用“*”作为通配符,而SQL Server使用“%”)。
http://office.microsoft.com/en-us/access-help/like-operator-HP001032253.aspx
http://msdn.microsoft.com/en-us/library/ms179859.aspx
无论如何,请查看您要连接的数据库的文档,看它是否支持LIKE语句以及正确的语法。
或者在这里查看答案:Parameterized Queries with LIKE and IN conditions
修改强>
我看到你试图将输入参数用作LIKE子句的一部分。我找不到这个特定于Sybase的文档,但即使在SQL Server方面,我们也需要(不幸的是)在这种情况下加入字符串。从SQL注入的角度来看,我觉得这很糟糕,但我不相信它有办法解决它,所以你不得不依赖于清理/转义字符串。
这是在SQL Server中执行此操作的帖子。希望这可以转化为适用于Sybase ASA的东西。 http://palisade.plynt.com/issues/2006Jun/injection-stored-procedures/
作为最后的手段,您可以使用:
string sql = "SELECT field FROM table WHERE fieldName like '%" + SOMESTRING.Replace("'", "''") + "%';