Voglio CREARE CAST una funzione adatta per convertire 'carattere che varia' in 'intero'. Qualcuno può suggerire una funzione? Tutto ciò che cerco fallisce.Postgresql. CREATE CAST 'carattere che varia' a 'numero intero'
risposta
Utilizzare questo:
CREATE CAST (varchar AS integer) WITH INOUT [AS IMPLICIT];
Utilizza le funzioni di input/output dei tipi di dati interessati.
Più di 3k visualizzazioni/sp/query per rivedere e correggere i cast impliciti ... quindi sei arrivato con questo f **** facile soluzione. Mi ci vorrà molto più tempo. Grazie, risparmiatore di lavoro! (Mi chiedo perché gli sviluppatori di Postgres non abbiano inserito un parametro in postgresql.conf per questo ...) – Christian
Noi (gli sviluppatori di PostgreSQL) viviamo e impariamo. –
Presumo che tu voglia riprendere il comportamento di Postgres 8.3 riguardo il casting implicito.
Vedere questo blog per gli esempi:
http://petereisentraut.blogspot.com/2008/03/readding-implicit-casts-in-postgresql.html
Oh: e bug che fornitore del software per risolvere lo SQL rotto;)
Modifica
Questo dovrebbe farlo:
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);
La funzione precedente funziona se si aggiorna l'SQL per eseguire un cast esplicito. Tuttavia, se si aggiunge "come implicito" alla fine della propria istruzione "create cast", Postgres sarà in grado di capire automaticamente cosa si sta tentando di fare quando si confronta un numero intero con un varchar che può essere convertito in un numero intero .
Ecco la mia dichiarazione aggiornata che sembrava funzionare "implicitamente":
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;
Questa funzione mi è stata utile per trasmettere i campi varchar come un normale utente di database che emette query anziché eseguire il cast del tipo stesso. – johnmartirano
ho ottenuto lo stesso errore. Ho un COLONNA
codice
dichiarata come tipo di carattere variabile (20) e una variabile locale
l_code
dichiarato di tipo int.
ho risolto sostituendo nella procedura di
SELECT
...
WHERE
code = l_code AND
..
con
code = cast(l_code as character varying) AND
- 1. Rails 3.1. Heroku PGError: l'operatore non esiste: carattere che varia = numero intero
- 2. PostgreSQL: è possibile cast enum in intero?
- 3. Django e PostgreSQL - valore troppo lungo per il tipo di carattere che varia (512)
- 4. Come si converte un carattere in numero intero in una funzione di PostgreSQL (9.1)?
- 5. Come rappresentare un numero intero superiore a un numero intero
- 6. Numero intero fuori intervallo nel database PostgreSQL
- 7. possiamo convertire il numero intero nel carattere
- 8. Cambia il tipo di colonna da un carattere che varia al timestamp senza fuso orario in PostgreSQL
- 9. Limite lunghezza variabile carattere PostgreSQL
- 10. Conversione di un numero intero di Enum in PostgreSQL
- 11. Numero intero che utilizza Linq
- 12. Cast di booleano PostgreSQL (0 come falso)
- 13. DatabaseError: valore troppo lungo per il tipo di carattere che varia (100)
- 14. Numero intero fuori intervallo
- 15. Memorizzare un numero intero in un carattere * in C++
- 16. Come emettere un carattere come numero intero tramite cout?
- 17. come verificare se il carattere è un numero intero
- 18. Ada95: conversione di un numero intero in carattere
- 19. Distinguere la lettura del carattere dal numero intero
- 20. Come determinare quale colonna è implicata in "valore troppo lungo per il tipo di carattere che varia"?
- 21. Carattere moltiplicato per intero (C++)
- 22. Come faccio a trasmettere una stringa a numero intero e ad avere 0 in caso di errore nel cast con PostgreSQL?
- 23. Come determinare a livello intero numero intero/min in C?
- 24. Conversione da stringa a numero intero
- 25. Numero intero lisp comune a conversione esadecimale
- 26. Conversione da numero intero a BigInteger
- 27. Come arrotondare un numero intero a centinaia?
- 28. Numero intero o numero decimale
- 29. BeanUtils.copyProperties converti Numero intero nullo a 0
- 30. Complemento a due del numero intero lungo
Si dovrebbe risolvere il tuo SQL di non fare affidamento in implict getta. Non fare affidamento su cast impliciti nelle tue affermazioni, mai. –
Sono d'accordo. Tuttavia non posso usare un software standard. – Simon