kdb表中的模糊查询

kdb表中的模糊查询,kdb,Kdb,创建如下表: Id name class 1 adcvs 2 2 adxcg 4 3 adcbfgf 31 4 adcbfgr 34 5 adcbfgy 23 6 adcbfgo 12 现在我想得到name列包含adcbfg值的所有列。我使用了查询:从“adcbfg*中名称所在的表中选择,请给出我查询的问题。谢谢您需要使用like来执行此操作: 创建您的表: table:(

创建如下表:

    Id   name    class
    1    adcvs    2
    2    adxcg    4
    3    adcbfgf  31
    4    adcbfgr  34
    5    adcbfgy  23
    6    adcbfgo  12
现在我想得到name列包含adcbfg值的所有列。我使用了查询:从“adcbfg*中名称所在的表中选择,请给出我查询的问题。谢谢您需要使用like来执行此操作:

创建您的表:

table:([]Id:1+til 6;name:`adcvs`adxcg`adcbfgf`adcbfgr`adcbfgy`adcbfgo;class:2 4 31 34 23 12)

Id name    class
----------------
1  adcvs   2    
2  adxcg   4    
3  adcbfgf 31   
4  adcbfgr 34   
5  adcbfgy 23   
6  adcbfgo 12 
然后解析名称遵循模式adcbfg的行:

您需要使用like来执行以下操作:

创建您的表:

table:([]Id:1+til 6;name:`adcvs`adxcg`adcbfgf`adcbfgr`adcbfgy`adcbfgo;class:2 4 31 34 23 12)

Id name    class
----------------
1  adcvs   2    
2  adxcg   4    
3  adcbfgf 31   
4  adcbfgr 34   
5  adcbfgy 23   
6  adcbfgo 12 
然后解析名称遵循模式adcbfg的行:

使用like的另一种方法可以是:

table[where(table`name)like"adcbfg*"]
这将使用更少的内存,但需要更长的计算时间

此外,有关like关键字的更多详细信息和示例,请访问KX网站:

使用like的另一种方法可以是:

table[where(table`name)like"adcbfg*"]
这将使用更少的内存,但需要更长的计算时间

此外,有关like关键字的更多详细信息和示例,请访问KX网站:


由于符号只是对字符串的引用,因此如果不先解除对它们的引用以获取基础字符串,就无法对其使用正则表达式函数。这就是为什么使用'adcbfg*不起作用

出于同样的原因,在字符串正则表达式和sym(如name=adcbfg*之间)之间使用比较运算符将不起作用,因为它们是不同的类型

JejeBelfort建议的like命令允许您在字符串和符号上使用正则表达式,因为对于符号,它将在应用正则表达式之前首先解除对它的引用

虽然它可能看起来比只使用字符串更复杂,但由于符号类型是固定宽度的,因此查找速度比使用可变宽度字符串快


有关正则表达式的详细信息,请参见

,因为符号只是对字符串的引用,如果不先解除对它们的引用以获取基础字符串,则无法对其使用正则表达式函数。这就是为什么使用'adcbfg*不起作用

出于同样的原因,在字符串正则表达式和sym(如name=adcbfg*之间)之间使用比较运算符将不起作用,因为它们是不同的类型

JejeBelfort建议的like命令允许您在字符串和符号上使用正则表达式,因为对于符号,它将在应用正则表达式之前首先解除对它的引用

虽然它可能看起来比只使用字符串更复杂,但由于符号类型是固定宽度的,因此查找速度比使用可变宽度字符串快

有关正则表达式的详细信息,请参见正则表达式