Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

Firebird SQL “REPLACE” tips

Digital Innovation Partner

Firebird SQL “REPLACE” tips

La gestione del carattere “&” con le funzioni di manipolazione delle stringhe di Firebird a volte potrebbero non dare i risultati sperati.

La documentazione della funzione “REPLACE” ufficiale di Firebird: https://firebirdsql.org/refdocs/langrefupd25-intfunc-replace.html

Ad esempio se dovessimo fare la classica sostituzione “>” con “>” con un update verrebbe normale scrivere:

UPDATE "YOUR_TB_NAME"
SET "YOUR_TB_NAME"."TEXT_FIELD" = REPLACE("YOUR_TB_NAME"."TEXT_FIELD",'>','>')

se questa sintassi non produce i risultati sperati, si può ovviare usando il codice carattere corrispondente ad “&” che sulla tabella ASCII corrisponde al codice decimale: 38

UPDATE "YOUR_TB_NAME"
SET "YOUR_TB_NAME"."TEXT_FIELD" = REPLACE("YOUR_TB_NAME"."TEXT_FIELD",ASCII_CHAR (38) ||'gt;','>')

in molte sintassi SQL il carattere “&” usato all’interno della funzione replace viene utilizzato come simbolo per far assumere alla funzione “Replace” un comportamento leggermente diverso da quello che ci si aspetta. 

Nel caso invece volessimo sostituire “<BR>” con i relativi “\n\r” o per gli amanti di Delphi #10#13 potremmo eseguire la seguente stinga:

UPDATE "YOUR_TB_NAME"
SET "YOUR_TB_NAME"."TEXT_FIELD" = REPLACE("YOUR_TB_NAME"."TEXT_FIELD",'<br>',ASCII_CHAR (10) || ASCII_CHAR (13))