Похоже, что ваш запрос возвращает нужный вам результат.
В качестве альтернативы можно использовать ключевое слово «like».
Когда мы используем предложение where в конце оператора select, в разделе 'where' ожидается одно логическое значение, сообщающее ему, должен ли быть выбран столбец.
Когда мы делаем where val in "hello"
, он на самом деле возвращает логическое значение для каждого элемента строки , с которой он соответствует (когда он не обернут):
q)val:"hello"
q)val in "hello"
11111b
Поэтому для получения единственного возвращенного логического значения мы используем ключевое слово like
q)val like "hello"
1b
Кроме того, при передаче списка строк предложению where следует использовать наречие «каждый справа», чтобы указывать предложению where работать с каждым экземпляром списка.
q)val like/: ("hello";"test")
10b
Однако мы снова сталкиваемся с несколькими логическими значениями, когда в предложении where ожидается один
Поэтому мы используем ключевое слово any
, чтобы возвращать результаты, когда или привет или test .
q)any val like/: ("hello";"test")
1b
И мы видим, это дает требуемые результаты
q)select from t where any val like/: ("hello";"test")
sym time price val
--------------------------
ibm 10:01:01 100 "hello"
ibm 10:01:08 105 "test"
Надеюсь, это поможет