我有这个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转义函数替换函数?
答案 0 :(得分:1)
PostgreSQL服务器本身没有任何类似函数的转义语法。这种转义语法的全部目的是抽象几种DB方言。准确地将其移动到特定的服务器中充其量是可疑的。
Npgsql手册未提及任何转义处理或连接字符串参数。
所以你运气不好。