C# Npgsql:它能识别ODBC空间序列吗?

C# Npgsql:它能识别ODBC空间序列吗?,c#,postgresql,odbc,npgsql,postgresql-9.1,C#,Postgresql,Odbc,Npgsql,Postgresql 9.1,我有这个SQL查询(在T-SQL中): 然后,我有一个automagic正则表达式转换,我可以打开它,使顶级语法与PostgreSQL兼容,它从input语句生成以下输出语句: SELECT USR_ID ,USR_UserName FROM T_Benutzer WHERE (1=1) AND {fn LCASE(BE_User)} LIKE {fn LCASE({fn CONCAT(@strTerm, '%')} )} AND BE_Hide = 'false' OR

我有这个SQL查询(在T-SQL中):

然后,我有一个automagic正则表达式转换,我可以打开它,使顶级语法与PostgreSQL兼容,它从input语句生成以下输出语句:

SELECT 
   USR_ID 
  ,USR_UserName 
FROM T_Benutzer 
WHERE (1=1) 
AND {fn LCASE(BE_User)} LIKE {fn LCASE({fn CONCAT(@strTerm, '%')} )} 
AND BE_Hide = 'false' 
ORDER BY USR_UserName 
LIMIT 10 
我认为这应该足以让大多数东西在PostgreSQL上工作,但现在我意识到Npgsql不能识别ODBC转义序列({fn whatever()})

在Npgsql连接字符串设置中,或者在Postgres本身中,是否有任何选项可以打开?

还是我运气不好,不得不写一个ODBC转义函数替换函数?

PostgreSQL server本身没有任何类似函数的转义语法。这种转义语法的全部目的是抽象几种DB方言。将其准确地移动到特定的服务器上充其量是不确定的

本手册未提及任何转义处理或连接字符串参数


所以你运气不好。

请注意,我不想自己使用ODBC驱动程序,因为围绕ODBC的包装器的mono实现质量有问题。错误。Npgsql确实不支持它,所以我运气不好。但是现在(在周末之后),我已经编写了一个ODBC转义序列语法解析器和替换程序。非常有效,包括通过递归解析嵌套语句。
SELECT 
   USR_ID 
  ,USR_UserName 
FROM T_Benutzer 
WHERE (1=1) 
AND {fn LCASE(BE_User)} LIKE {fn LCASE({fn CONCAT(@strTerm, '%')} )} 
AND BE_Hide = 'false' 
ORDER BY USR_UserName 
LIMIT 10