Se inserisco una stringa di testo con uno spazio bianco finale in una colonna di caratteri di una tabella di dati, sembra che JMP elimini automaticamente lo spazio bianco. Esiste un modo per evitare che ciò accada?
Grazie Ian,
Ora mi rendo conto che probabilmente sarebbe stato utile con un po' più di contesto: i dati dei caratteri che sto inserendo nella tabella sono input dell'utente che recupero da un database con una query SQL. Sto utilizzando i valori recuperati per creare dinamicamente una nuova query, ma poiché gli spazi bianchi vengono tagliati, il valore nella mia tabella non corrisponde più ai valori nel database. Sospetto che questo comportamento sia anche il motivo per cui non posso utilizzare il prompt del filtro nella piattaforma Query Builder per filtrare le righe con spazi bianchi finali: in tal caso il risultato della query è semplicemente vuoto. Tieni presente che non ho problemi a codificare una clausola WHERE che corrisponda alle righe in questione e che posso anche utilizzare quanto segue per abbinare tutte le righe con spazi bianchi finali. Tuttavia, non appena i dati si trovano in una tabella JMP, gli spazi bianchi scompaiono.
"SELECT *
FROM schema.table
WHERE RIGHT(column, 1) = ' ';"
Qualcosa di molto simile a questo comportamento mi ha infastidito per un po', ho appena inviato questo elemento della lista dei desideri che potresti trovare utile:
Conservare i dati quando il tipo di dati della colonna viene modificato
Non sono sicuro che esista un'opzione per forzare questo comportamento, ma potrebbe essere colpa mia.
Ma se stai "inserendo" valori nelle celle con qualche altro JSL potresti essere in grado di utilizzare una "colonna Espressione" per persistere i valori:
NamesDefaultToHere(1);
dt =
New Table( "Trailing White Space",
Add Rows( 2 ),
New Column( "String",
Character,
"Nominal",
Set Values( {"", ""} ),
Set Display Width( 96 )
),
New Column( "Expression String",
Expression,
"None",
Set Values( {Empty(), Empty()} )
)
);
Wait(3);
txt1 = "Text";
txt2 = "Text ";
Column(dt, 1)[1] = txt1;
Column(dt, 2)[1] = txt1;
Column(dt, 1)[2] = txt2;
Column(dt, 2)[2] = txt2;
for(r=1, r<=NRow(dt), r++, Print(Length(Column(dt, 1)[r]), Length(Column(dt, 2)[r])));
Avendo memorizzato i valori in questo modo, l'utilità di questo approccio dipenderà anche da ciò che accadrà dopo.