KDB:如何比较字符串?

KDB:如何比较字符串?,kdb,Kdb,我有一个类型为C的列。如何将该值与同一列中的上一个值进行比较?我确实像prev col1一样使用了col1,但它返回了一个更正提示:lengtherror。我还创建了另一列newCol:prev col1,但仍然无法执行比较。我也试过=,但运气不好。我该怎么做? a样本数据: col1 Paris London London New York Singapore Ha Noi 使用以下各项: 搭配: 您可以使用prior关键字吗 q)t col1 ----------- &quo

我有一个类型为C的列。如何将该值与同一列中的上一个值进行比较?我确实像prev col1一样使用了
col1,但它返回了一个
更正提示:length
error。我还创建了另一列
newCol:prev col1
,但仍然无法执行比较。我也试过
=
,但运气不好。我该怎么做? a样本数据:

col1
Paris
London
London
New York
Singapore
Ha Noi
使用以下各项:

搭配:


您可以使用
prior
关键字吗

q)t
col1       
-----------
"Paris"    
"London"   
"London"   
"Ney York" 
"Singapore"
"Ha Noi"   
q)select (~) prior col1 from t
col1
----
0   
0   
1   
0   
0   
0  

当比较字符串时,如果它们的长度相同,它将检查数组中每个槽中的每个字符是否相同,并返回布尔值列表,告诉您字符串在哪里相同。如果字符串是两个不同的长度,您将得到一个长度错误。如果要测试两个字符串是否完全相同,可以使用
~
,这将在不考虑字符串长度的情况下工作,并提供一个布尔值,告诉您它们是否相同。

您应该使用
like'
而不是
like
,因为您不是在比较单个值,而是在比较列表

update comparison: col1 like' prev col1 from 
  ([]col1:("Paris";"London";"London";"New York";"Singapore";"Ha Noi"))

虽然这与Matthews和jomahony的答案基本相同,但是
difference
关键字可以让阅读/理解变得更容易:

q)select not differ col1 from ([]col1:("Paris";"London";"London";"New York"))
col1
----
0
0
1
0
q)select not differ col1 from ([]col1:("Paris";"London";"London";"New York"))
col1
----
0
0
1
0