Si je mets une chaîne de texte avec un espace de fin dans une colonne de caractères d'une table de données, il semble que JMP supprime automatiquement cet espace. Y a-t-il un moyen d'empêcher que cela se produise?
Merci Ian,
Je me rends compte maintenant que cela aurait probablement été utile avec un peu plus de contexte : les données de caractères que je remplis dans le tableau sont des entrées utilisateur que je récupère à partir d'une base de données avec une requête SQL. J'utilise les valeurs récupérées pour créer dynamiquement une nouvelle requête, mais comme les espaces blancs sont coupés, la valeur de ma table ne correspond plus aux valeurs de la base de données. Je soupçonne que ce comportement est également la raison pour laquelle je ne peux pas utiliser l'invite de filtre de la plate-forme Query Builder pour filtrer les lignes avec des espaces de fin - dans ce cas, le résultat de la requête est simplement vide. Notez que je n'ai aucun problème à coder en dur une clause WHERE qui correspond aux lignes en question, et que je peux également utiliser ce qui suit pour faire correspondre toutes les lignes avec des espaces de fin. Cependant, dès que les données sont dans une table JMP, l'espace blanc disparaît.
"SELECT *
FROM schema.table
WHERE RIGHT(column, 1) = ' ';"
Quelque chose de très similaire à ce comportement m'a dérangé pendant un moment, je viens de soumettre cet élément de liste de souhaits qui pourrait vous être utile :
Conserver les données lorsque le type de données de la colonne est modifié
Je ne suis pas sûr qu'il existe une option pour forcer ce comportement, mais cela peut être de ma faute.
Mais si vous "mettez" des valeurs dans des cellules avec un autre JSL, vous pourrez peut-être utiliser une "colonne d'expression" pour conserver les valeurs :
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])));
Après avoir stocké les valeurs de cette manière, l'utilité de cette approche dépendra également de ce qui se passera ensuite.