1. Проблема 1. (бага 2231) CAST('aaa' AS nchar(10)) + CAST('aaa' AS nchar(10)) = "aaa aaa " 2. Проблема 2. (бага 3560) ... WHERE DELREC.TYPE=SUBSTR (CAST((DT.SP2156) as mvarchar), 1, 2) DELREC.TYPE и DT.SP2156 mchar ERROR: could not find member 1(298099,298099) of opfamily 298262 Надо разобраться как работает SUBSTR от 1с в Postgres и substring в MSSQL. И подумать как изменить сложившуюся ситуацию.
Тест: Складываем две строки: postgres: SELECT CAST('aaa' as mchar(10)) + CAST('aaa' as mchar(10)) as plus_mchar_10 , CAST('aaa' as mvarchar(10)) + CAST('aaa' as mvarchar(10)) as plus_mvarchar_10 mchar(10) "aaa aaa ", mvarchar(10) "aaaaaa" MSSQL SELECT CAST('aaa' AS nchar(10)) + CAST('aaa' AS nchar(10)) AS plus_nchar_10, CAST('aaa' AS char(10)) + CAST('aaa' AS char(10)) AS plus_char_10, CAST('aaa' AS nvarchar(10)) + CAST('aaa' AS nvarchar(10)) AS plus_nvarchar_10 nchar(10) "aaa aaa " char(10) "aaa aaa " nvarchar(10) "aaaaaa" Получили одинаковые результаты. Тест 2: Складываем две строки: после substr postgres: SELECT substr(CAST('aaa' AS mchar(10)),1,2) + substr(CAST('aaa' AS mchar(10)),1,2) as plus_substr_mchar_10, substr(CAST('aaa' AS mvarchar(10)),1,2) + substr(CAST('aaa' AS mvarchar(10)),1,2) as plus_substr_mvarchar_10 substr(,1,2) mchar(10) "aa aa " substr(,1,2) mvarchar(10) "aaaa" MSSQL SELECT SUBSTRING(CAST('aaa' AS nchar(10)), 1, 2) + SUBSTRING(CAST('aaa' AS nchar(10)), 1, 2) AS plus_substr_nchar_10, SUBSTRING(CAST('aaa' AS char(10)), 1, 2) + SUBSTRING(CAST('aaa' AS char(10)), 1, 2) AS plus_substr_char_10, SUBSTRING(CAST('aaa' AS nvarchar(10)), 1, 2) + SUBSTRING(CAST('aaa' AS nvarchar(10)), 1, 2) AS plus_substr_nvarchar_10 со всеми тремя типами результат один "aaaa" вовращаемые типы: plus_substr_nchar_10 nvarchar(4) plus_substr_char_10 varchar(4) plus_substr_nvarchar_10 nvarchar(4) т.е. от преобразует все в var Итак по разному работает SUBSTRING и SUBSTR. Надо заметить, что в selta тоже преобразовывалось но вызвало багу , но путем лишниго преобразования уже после самого парсинья Итого: MSSQL возвращает (n)varchar(число символов на выходе) postgres тоже самое, что на входе.
Пока отложим. Это не существенная бага.
Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять.