quiero crear REPARTO una función adecuada para convertir 'carácter variable' a 'entero'. ¿Alguien puede sugerir una función? Todo lo que intento falla.Postgresql. CREAR REPARTO 'caracteres de longitud variable' a 'entero'
Respuesta
Use esto:
CREATE CAST (varchar AS integer) WITH INOUT [AS IMPLICIT];
Utiliza las funciones de entrada/salida de los tipos de datos implicados.
Más de 3k vistas/SP/consultas para revisar y reparar conversiones implícitas ... entonces has venido con esta f **** fácil solución. Me dará mucho más tiempo. Gracias, ahorrador de trabajo! (Me pregunto por qué los desarrolladores de Postgres no pusieron un parámetro en postgresql.conf para esto ...) – Christian
Nosotros (los desarrolladores de PostgreSQL) vivimos y aprendemos. –
me supuesto de que desea volver al comportamiento de PostgreSQL 8.3 en relación con la conversión implícita.
Ver esta entrada de blog para ejemplos:
http://petereisentraut.blogspot.com/2008/03/readding-implicit-casts-in-postgresql.html
Ah: y error que proveedor del software para solucionar el SQL rota;)
Editar
Esto debe hacerlo:
CREATE FUNCTION toint(varchar) RETURNS integer STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT cast($1 as integer);'; CREATE CAST (varchar AS integer) WITH FUNCTION toint(varchar);
Sí. Pero me encontré con que le falta int4 (varchar) – Simon
Contiene un elenco de número entero que es lo mismo que int4 si no me equivoco. –
Perdóname si estoy siendo estúpido, pero ninguna de las funciones devuelve un número entero. Espero hacer CREATE CAST (varchar como entero) ... – Simon
La función anterior es efectivo si actualiza su SQL que hacer una conversión explícita. Sin embargo, si se agrega 'implícito' hasta el final de su declaración de "crear fundido", Postgres será capaz de calcular automáticamente lo que está tratando de hacer cuando se compara un número entero con un varchar que se puede convertir en un entero .
aquí está mi declaración actualizada que parecía funcionar "implícitamente":
CREATE FUNCTION toint(varchar)
RETURNS integer
STRICT IMMUTABLE LANGUAGE SQL AS
'SELECT cast($1 as integer);';
CREATE CAST (varchar AS integer) WITH FUNCTION toint(varchar) as Implicit;
Esta función me ayudó a lanzar campos varchar como un usuario de base de datos normal que emite consultas en lugar de lanzar el tipo en sí. – johnmartirano
que tiene el mismo error. Tengo una columna
código
declarada como carácter de tipo variable (20) y una variable local
l_code
declarada como tipo int.
Solucioné reemplazando en el procedimiento
SELECT
...
WHERE
code = l_code AND
..
con
code = cast(l_code as character varying) AND
- 1. Límite de longitud variable de caracteres de PostgreSQL
- 2. Codificación de entero de longitud variable
- 3. PostgreSQL: ¿Es posible convertir enum a entero?
- 4. Formato entero, relleno a una longitud determinada
- 5. PostgreSQL latitud longitud consulta
- 6. Encontrar la longitud de cadena de un entero en .NET
- 7. PEP8 - 80 caracteres - Entero grande
- 8. Cómo convertir un entero a una cadena de bytes de longitud variable?
- 9. ¿Convertir variable de punto flotante a entero?
- 10. Convertir cadena/caracteres a entero en python
- 11. En PyTables, ¿cómo crear una matriz anidada de longitud variable?
- 12. argumentos de longitud variable C#
- 13. Arreglo de longitud variable
- 14. la conversión de un entero a Enum en PostgreSQL
- 15. PHP reparto variable como tipo de objeto en bucle foreach
- 16. Comprobación de longitud de caracteres en rubí
- 17. Cómo convertir un entero a cadena hexagonal de longitud fija en C#?
- 18. Conversión de entero de 32 bits a 4 caracteres
- 19. PHP argumentos de longitud variable?
- 20. vector iteradores de reparto
- 21. Conversión de caracteres sin signo a entero con signo
- 22. AS3 argumento de longitud variable ampliar a llamar a otra función con argumentos de longitud var
- 23. Fuerza longitud máxima para cadena en PostgreSQL
- 24. Entero a matriz binaria
- 25. Longitud máxima de una variable de cadena en Android
- 26. Iteración a través de una matriz Java de longitud variable
- 27. Crear cadena de caracteres repetidos en el script de shell
- 28. ¿Por qué falla este reparto de corto a int?
- 29. ¿Base de datos simple latitud/longitud + número entero?
- 30. Consulta SQL: ordena por longitud de caracteres?
Usted debe fijar su SQL a no confiar en implict arroja. No confíe en las implícitas en sus declaraciones, nunca. –
Estoy de acuerdo. Sin embargo, no puedo. Estoy usando una pieza de software estándar. – Simon