在odbc连接中使用like语句

时间:2011-03-01 20:32:07

标签: .net database odbc database-connection sqlanywhere

有没有办法在.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。

1 个答案:

答案 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("'", "''") + "%';