Encontrar valor maximo de un texto mixto
hola, quisiera que me ayuden con este problemita.
Quiero generar un codigo autoincremental de un campo varchar, con texto mixto letras y numeros pero para eso quiero encontrar primero el valor mas alto. C1-N001 C1-N002 C1-N003 estoy intentando con este código pero hay un error se supone que este codigo sql toma la cadena de texto y quita los 4 primeros caracteres y los 3 restantes los convierte a int y busca el valor mas alto. |
¿Para qué base de datos?
|
Cita:
¿Qué base de datos? ¿Lo utilzias como un query o dentro de una trigger o un procedimiento almacenado? Posibilidad 1: Te dice que no puede convertirlo a entero: Puede ser que sea porque si quieres quitar 4 caracteres debas utiliar substrin(string, 4, largo). La posición 4 es la 4 y no la 3. Aunque creo que debería ser desde la posición 5 ya que la cuatro es la primera letra del segundo conjunto de datos (Cn-Cnnn). También habría que saber si el tercer parámetro se refiere a la posición final o a cuantos caracteres tomar: substring(c, 5, lenght(c)-5) /* de la quinta posición n caracteres */ substring(c, 5, length(c)) /* de la quinta posicion hasta la posición n */ Posibilidad 2: No existe la instrucción: Puede ser que no entienda substring o length o alguna otra cosa. Posibilidad 3: No existe el campo: Te has equivocado de nombre de campo. Posibilidad 4: No existe la tabla: Te has equivocado de nombre de tabla. Posibilidad ... |
Bueno para describir un poco más la consulta.
La base de datos que estoy usando es Posgresql, y la consulta va por medio de un TQuery y con respecto al error es el siguiente: no existe el tipo <<unsigned>>. ¿como quiero que funcione? Tengo el texto C1-N003 quiero que quite los cuatro primeros caracteres C1-N y de los siguientes tres 003 me seleccione el numero maximo el más alto. para tomar ese numero y generar un nuevo numero que incremente. |
Si el prefijo siempre es C1-N el MAX debería valer, ¿no?
|
Creo que la función substring está mal implementada...
De esta forma creo debe funcionar... Saludos cordiales |
Por un lado el error es claro: no existe unsigned para Postgres. Deberás saber cuales son los tipos admitidos y utilizar uno de ellos.
Mira este link. De todos modos, yo insisto en que creo que la posición inicial debe ser 5
Si la longitud de la parte numerica es fija (3) puedes utilizarlo asi, si es variable, deberás utilizar char_length para calcularla. En este link tienes información de como se utiliza substring (como digo yo aparentemente) y char_length. |
Amigo tienes toda la razón...
Cita:
|
Gracias amigos por sus respuestas y sus aportes.
|
La franja horaria es GMT +2. Ahora son las 15:16:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi