0

我有这个 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 兼容,它从输入语句生成以下输出语句:

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 不管()})。

我可以打开 Npgsql 连接字符串设置或 Postgres 本身中的任何选项吗?
还是我运气不好,必须写一个 ODBC 转义函数替换函数?

4

1 回答 1

1

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

Npgsql手册没有为此目的提及任何转义处理或连接字符串参数。

所以你运气不好。

于 2012-03-25T12:07:29.003 回答