Npgsql:它能识别ODBC espace序列吗?

时间:2012-03-24 12:38:37

标签: c# postgresql odbc npgsql postgresql-9.1

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

--DECLARE @strTerm varchar(300) 
--SET @strTerm = 'c' 


SELECT TOP 10 
   USR_ID 
  ,USR_UserName
FROM T_Benutzer 

WHERE (1=1) 
--AND {fn LCASE(USR_UserName)} LIKE {fn LCASE(@strTerm + '%')} 
AND {fn LCASE(BE_User)} LIKE {fn LCASE({fn CONCAT(@strTerm, '%')} )} 
--AND BE_Hide = 0  
AND BE_Hide = 'false' 

ORDER BY USR_UserName

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

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转义函数替换函数?

1 个答案:

答案 0 :(得分:1)

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

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

所以你运气不好。