Как уже упоминалось, KDB в настоящее время не поддерживает это сопоставление регулярному выражению.
Если у вас есть несколько шаблонов или вы можете разбить ваш шаблон на несколько шаблонов, вы также можете сопоставить их в одном условии.
Например, как уже упоминалось в других ответах, вы можете разбить свой шаблон на два - "* abc *" и "* ef *".Затем сопоставьте все шаблоны и выберите строки, соответствующие всем шаблонам.
q) select from t where all field like/: ("*abc*";"*ef*")
Вы можете добавить больше шаблонов в список.
Производительность будет зависеть от шаблона данных.Если для первого шаблона больше совпадений, то это решение будет работать быстрее, чем несколько условий в выражении where и наоборот.
В приведенном ниже примере создается таблица путем дублирования записей в таблице примера, чтобы увеличить совпадения в первомшаблон.Это решение работает быстро, так как есть несколько совпадений для первого шаблона.
q) t:1000000#([]id:til 5; field:("abc_xy_ef";"abc_ef";"abc_de";"abc_xy_uv";"abc_ef_ghi"))
q) \ts select from t where all field like/: ("*abc*";"*ef*") ; / 46 25166144
q) \ts select from t where field like "abc*", field like "*ef*"; / 53 25166144
Аналогично, для приведенных ниже совпадений таблиц по первому шаблону установлено значение 0, поэтому решение с несколькими фильтрами работает быстро.
q) t:([]id:til 1000000;field:1_1000000 {"_" sv 2?'3#enlist 1_.Q.a}\"")
q) \ts select from t where all field like/: ("*abc*";"*ef*") ; / 43 3146000
q) \ts select from t where field like "abc*", field like "*ef*"; / 9 1048816
Таким образом, в принципе это решение потребует более или менее одинакового времени длятот же размер таблицы с различными шаблонами данных.