データ テーブルの文字列に末尾に空白のあるテキスト文字列を入力すると、JMP によってその空白が自動的に削除されるようです。これを防ぐ方法はありますか?
ありがとう、イアン。
今になって、もう少しコンテキストがあった方が良かっただろうと気づきました。テーブルに入力している文字データは、SQL クエリを使用してデータベースから取得したユーザー入力です。取得した値を使用して新しいクエリを動的に作成していますが、空白が削除されているため、テーブル内の値はデータベース内の値と一致しなくなりました。この動作が、クエリ ビルダー プラットフォームのフィルター プロンプトを使用して末尾に空白がある行をフィルターできない理由でもあるのではないかと思います。その場合、クエリ結果は単に空になります。問題の行に一致する WHERE 句をハード コーディングすることに問題はなく、以下を使用して末尾に空白があるすべての行に一致させることもできます。ただし、データが JMP テーブルに入るとすぐに、空白はなくなります。
"SELECT *
FROM schema.table
WHERE RIGHT(column, 1) = ' ';"
この動作に非常によく似たものがしばらくの間私を悩ませていましたが、役に立つと思われるこのウィッシュリスト項目を送信しました:
列のデータ型が変更されてもデータを保持する
この動作を強制するオプションが存在するかどうかはわかりませんが、それは私のせいかもしれません。
ただし、他の JSL を使用してセルに値を「入力」する場合は、「式列」を使用して値を保持できる可能性があります。
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])));
このように値を保存した場合、このアプローチの有用性は次に何が起こるかによっても異なります。