如果我將帶有尾隨空格的文字字串放入資料表的字元列中,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])));
以這種方式儲存值後,這種方法的有用性也將取決於接下來發生的情況。