Summary: | SUBSTR и тип возвращаемого значения. | ||
---|---|---|---|
Product: | SELTA@Etersoft | Reporter: | Станислав Коробейников <stas> |
Component: | Общее | Assignee: | Станислав Коробейников <stas> |
Status: | CLOSED LATER | QA Contact: | |
Severity: | major | ||
Priority: | P4 | CC: | goga, lav, shan |
Version: | 1.0.5 | ||
Target Milestone: | версия 1.0.4 | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 3247 |
Description
Станислав Коробейников
2009-02-26 17:55:33 MSK
Тест: Складываем две строки: 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 тоже самое, что на входе. Пока отложим. Это не существенная бага. Для тех, кто не пользуется багзиллой или не умеет пользоваться групповым редактированием при поиске, закрываем задачи, которые они должны были принять. |