如果我將帶有尾隨空格的文本字符串放在數據表的字符列中,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])));
以這種方式存儲值,這種方法的有用性還取決於接下來會發生什麼。