Различные правила сортировки. Вы спрашиваете базу данных, считает ли она, что _
следует до или после A
. По умолчанию Oracle использует двоичную сортировку (и кодовая точка 65, принадлежащая A
, меньше, чем кодовая точка 95, принадлежащая _
), в то время как SQL Server использует сопоставление базы данных по умолчанию, которое будет linguisti c упорядочивание, где _
считается предшествующей любой букве. Если вы хотите, чтобы сервер SQL демонстрировал идентичное поведение, используйте что-то вроде
SELECT MIN(v COLLATE Latin1_General_BIN2)
FROM (VALUES ('20013E17587A1_2'), ('20013E17587_2')) AS value(v);
Фактическое правильное размещение COLLATE
зависит от вашего «реального» запроса, а я полагаю, что это не так - вы может захотеть изменить сортировку самого столбца, например, в CREATE TABLE
.