KDB + Case不像查询一样敏感

时间:2013-09-19 03:20:23

标签: java database kdb

SELECT * FROM MarketTable WHERE customer LIKE "ABC"

这只返回ABC。我希望这可以返回ABC,aBC,abc等。

kDB +中是否有接近ILIKE的内容?

即使像lowertolowercase这样的功能也会有所帮助,但我认为这些功能都不可用。与在java中一样,我们有string.tolowercase

2 个答案:

答案 0 :(得分:4)

q)t:([] b:1 2 3; a:("abC";"aBc";"AbC"))
q)t
b a
-------
1 "abC"
2 "aBc"
3 "AbC"

q)select from t where upper[a] like "ABC"
b a
-------
1 "abC"
2 "aBc"
3 "AbC"

q)select from t where lower[a] like "abc"
b a
-------
1 "abC"
2 "aBc"
3 "AbC"

但是这种转换必须在每个查询上进行。更快地以要查询的格式存储列。

答案 1 :(得分:1)

另一种方法可能如下。这应该更快,但请检查您的数据

test: ([] id: (1; 2; 3; 4; 5); customer: ("abc"; "ABC"; "Abc"; "aBC"; "ABB"))
select from test where raze max customer like/: all_casings["abc"]
all_casings: {
fstr: 1#x;
ans: $[(count[x])>1;(upper[fstr],/: all_casings[1_x]), lower[fstr],/: all_casings[1_x];     ((upper[x]); lower[x])];
ans
};
相关问题