SELECT * FROM MarketTable WHERE customer LIKE "ABC"
这只返回ABC。我希望这可以返回ABC,aBC,abc等。
kDB +中是否有接近ILIKE
的内容?
即使像lower
或tolowercase
这样的功能也会有所帮助,但我认为这些功能都不可用。与在java中一样,我们有string.tolowercase
。
答案 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
};