Я немного удивлен, что столбцы - это строки, а не числа. При многих обстоятельствах, когда число и строки объединяются, результирующий тип является числом - и это превратит 'a'
в 0
.
Тем не менее, вы получаете порядок строк. И это, вероятно, следует за набором символов ASCII. В этом наборе символов цифры (например, '1'
) имеют более низкий «алфавитный» порядок, чем буквы.
К сожалению, в документации неясно, каковы правила для типов с UNION ALL
. Кажется, что есть смещение к строкам, которое отличается от арифметического c вычисления (например, 0 = 'a'
возвращает «true», потому что 'a'
преобразуется в число).