如果我将带有尾随空格的文本字符串放在数据表的字符列中,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])));
以这种方式存储值,这种方法的有用性还取决于接下来会发生什么。