Npgsql: он может распознавать последовательности ODBC-пространства? - PullRequest
0 голосов
/ 24 марта 2012

У меня есть этот запрос 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 не распознает escape-последовательности ODBC ({fn what ()}).

Есть ли какая-либо опция в настройках строки соединения Npgsql, которую я могу включить, или в самом Postgres?
Или мне не повезло, и мне нужно написать функции выхода ODBC вместо функции?

1 Ответ

1 голос
/ 25 марта 2012

Сам сервер PostgreSQL не имеет escape-синтаксиса для подобных функций.Целью этого escape-синтаксиса является абстракция нескольких диалектов БД.Перемещение именно этого на конкретный сервер было бы в лучшем случае сомнительным.

В руководстве Npgsql не упоминаются никакая escape-обработка и параметры строки подключения для этой цели.

Так что вам не повезло.

...