SELECT * FROM MarketTable WHERE customer LIKE "ABC"
这仅返回 ABC。我希望它返回 ABC、aBC、abc 等。
ILIKE
kDB+ 中有什么接近的东西吗?
甚至类似lower
or的功能tolowercase
也会有所帮助,但我认为这些功能不可用。就像在 java 中一样,我们有string.tolowercase
.
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"
但是,这种方式必须在每个查询上进行转换。以将要查询的格式更快地存储列。
另一种方法可能如下。这应该更快,但请检查您的数据
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
};