select where 語句進行列值比較長時間休息後回到 JSL 並感到生疏。
無法獲得 select where 語句的工作。我相信這很簡單。
我試圖通過將一個值與其他兩列中的值進行比較來選擇行。
dt << select where( :Col1 > :Col2 & :Col1< :Col3);
Col1 是字符(有意),因為它需要進一步使用,而 Col2、Col3 是數字列。
怎麼了?
我什至嘗試從 GUI 執行此操作,但似乎不起作用。
謝謝
Re: select where 語句進行列值比較你好@恩圖,
正如所提到的@mzwald ,比較 >、< 等需要使用數值。
為您的 :col1 (這是名義上的)解決這個問題的一個想法是使用數字編碼,例如 0、1、2、3、4 用於不同的字符類(如果可以的話),然後使用列屬性“ value labels”將字符置於標籤角色中。 這樣,您就可以執行比較,但在繪製或顯示列內容的同時,它會顯示值標籤。
我用一個簡單的 3 列表和您編寫的相同比較代碼對其進行了測試。 第 1 列的值為 0-4,第 2 列為隨機正態 (0),第 3 列為隨機均勻 (-1,1)。 在本例中,它選擇了第 6 行。
希望這可以幫助!,
DS

Re: select where 語句進行列值比較你好@恩圖,
我可以看到一些你需要解決的問題。 我認為您是在嘗試通過它們在數據表中的出現來引用這些列? 如果是這樣,您需要調整語法以這種方式進行引用(即 :Column(#)[] )。 此外,如果您的第一列是字符數據類型,則需要將對該列的引用包裝在 num() 函數中,以將字符串轉換為數值,以便進行比較。 這裡有一些代碼可以幫助您入門:
dt = current data table();
dt << select where( num(:Column(1)[]) > :Column(2)[] & num(:Column(1)[]) < :Column(3)[]);
我希望這有幫助!
@朱利安
Re: select where 語句進行列值比較對於 比較,所有列都需要是數字。