select where 语句用于列值比较经过长时间的休息和生锈后回到 JSL。
无法选择语句在哪里起作用。我相信这很简单。
我试图通过将一个值与其他两列中的值进行比较来选择行。
dt << select where( :Col1 > :Col2 & :Col1< :Col3);
Col1 是字符(故意),因为它需要进一步使用,而 Col2,Col3 是数字列。
怎么了?
我什至尝试从 GUI 执行此操作,但似乎不起作用。
谢谢
Re: select where 列值比较语句你好@ENTHU ,
如前所述@mzwald ,比较 >、< 等需要使用数值。
为您的 :col1 (名义上)解决这个问题的一个想法是使用数字编码,如 0、1、2、3、4 用于不同的字符类(如果可以的话),然后使用列属性“值标签”以将字符置于标签角色中。 这样,您可以执行比较,但在绘制或显示列内容的同时,它将显示值标签。
我使用一个简单的 3 列表和您编写的相同比较代码对其进行了测试。 第 1 列的值为 0-4,第 2 列是随机正态(0),第 3 列是随机均匀(-1,1)。 在这种情况下,它选择了第 6 行。
希望这可以帮助!,
DS

Re: select where 列值比较语句你好@ENTHU ,
我可以看到您需要解决的一些问题。 我认为您试图通过它们在数据表中的出现来引用这些列? 如果是这样,您需要调整语法以这种方式进行引用(即 :Column(#)[] )。 此外,如果您的第一列是字符数据类型,则需要在 num() 函数中包装对该列的引用,以将字符串转换为数值以便进行比较。 这里有一些代码可以帮助您入门:
dt = current data table();
dt << select where( num(:Column(1)[]) > :Column(2)[] & num(:Column(1)[]) < :Column(3)[]);
我希望这有帮助!
@朱利安
Re: select where 列值比较语句对于 比较,所有列都必须是数字。