3
SELECT * FROM MarketTable WHERE customer LIKE "ABC"

这仅返回 ABC。我希望它返回 ABC、aBC、abc 等。

ILIKEkDB+ 中有什么接近的东西吗?

甚至类似loweror的功能tolowercase也会有所帮助,但我认为这些功能不可用。就像在 java 中一样,我们有string.tolowercase.

4

2 回答 2

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"

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

于 2013-09-19T11:20:59.507 回答
2

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

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
};
于 2013-09-30T12:09:45.663 回答