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:
1 2 |
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
1 2 |
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:
1 2 |
UPDATE "YOUR_TB_NAME" SET "YOUR_TB_NAME"."TEXT_FIELD" = REPLACE("YOUR_TB_NAME"."TEXT_FIELD",'<br>',ASCII_CHAR (10) || ASCII_CHAR (13)) |