select 'test' || null returns null
mi aspettavo che sarebbe altrimenti restituisce 'test'.
È questo comportamento desiderato? Sembra strano che concatenazione di stringhe con un valore nullo vanificherebbe l'intera stringa ...
riferimento alla documentazione PG: http://www.postgresql.org/docs/9.1/static/functions-string.html
"Nota: Prima di PostgreSQL 8.3, queste funzioni sarebbe silenziosamente accettare i valori di diversi non- anche i tipi di dati stringa, a causa della presenza di coercizioni implicite da quei tipi di dati al testo.Queste coercizioni sono state rimosse perché spesso causavano comportamenti sorprendenti.Tuttavia, l'operatore di concatenazione delle stringhe (||) accetta ancora input non stringa, quindi tanto che almeno un input è di tipo stringa, come mostrato nella Tabella 9-6. In altri casi, inserisci una coercizione esplicita al testo se hai bisogno di duplicare il comportamento precedente. "
Dato che, con la loro funzione di stringa concat esempio:
concat (str "qualsiasi" [, str "qualsiasi" [...]]) testo concatenare tutti gli argomenti. Gli argomenti NULL vengono ignorati. concat ('abcde', 2, NULL, 22) >> abcde222
Dovrei solo abituarmi a questo comportamento con '||' concatenazione o è qualcosa che dovrebbe essere risolto?
E 'non solo "desiderato", è così che è specificato nello standard SQL. –
@a_horse_with_no_name - che è lo standard SQL è tutto ciò che avevo davvero bisogno di sapere - il tuo commento dovrebbe essere la risposta. Sembra tuttavia non intuitivo. Mi ha sfidato a dare un'occhiata a come le altre lingue gestiscono quel caso. C# sembra offrire l'intuitivo, trattando il null come una stringa di lunghezza zero. Javascript e Java concatenano "null" alla stringa (sheesh). – Reinsbrain