Tengo una tabla con una columna que se usa para indicar una posición. Las posiciones comienzan con A y pueden ir hasta AZ, al igual que en Excel. P.EJ
Row | Position
----|---------
1 | A
1 | B
1 | C
: | :
1 | Z
1 | AA
1 | AB
2 | A
2 | B
etc.
Si utilizo select max(position) from table where row = 1
el resultado es siempre Z y no AB.
¿Cómo seleccionaría el valor máximo de la columna que es de tipo varchar?
Si desea hacer esto con MAX()
, puede convertir los valores en valores alineados a la derecha:
select max(right(' ' + position, 2))
from t
where row = 1;
(Esto supone que la longitud máxima es 2, según la referencia a Excel).
Puede eliminar los espacios iniciales usando ltrim()
:
select ltrim(max(right(' ' + position, 2)))
from t
where row = 1;
La ventaja de este enfoque es que se adapta fácilmente a GROUP BY
:
select row, ltrim(max(right(' ' + position, 2))) as position
from t
group by row;
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras