0

タイプ C (すなわち文字配列) で KDB テーブルを定義しました。挿入した最初の値は String 型でした。2 番目の値の型は int (つまり i) でした。ここで、条件を指定して KDB にクエリを実行しようとしても、うまくいきwhere like="value"ません。where1 つの列に型が混在しているため、この列に基づいてデータを照会し、フィルター処理 (節で使用) するにはどうすればよいでしょうか?

4

2 に答える 2

5

単一の列に文字列と整数を混在させるのはひどい考えなので、ここで解決策を示したくありません。パフォーマンスを完全に破壊し、kdb が提供する利点をすべて妨げます。

何よりもまず、セットアップを再考してください。

そのままにしておくことを主張する場合は、次のようにクエリできます。

tab:([] col1:`a`b`c;col2:1 2 3;col3:("foo";"bar";1i))

完全一致の場合

q)select from tab where col3~\:"foo"
col1 col2 col3
---------------
a    1    "foo"

q)select from tab where col3~\:1i
col1 col2 col3
--------------
c    3    1

正規表現マッチングの場合

q)select from tab where {$[10h=type x;x like "f*";0b]}'[col3]
col1 col2 col3
---------------
a    1    "foo"

しかし、警告もアドバイスも受けていないとは言わないでください。

于 2015-02-10T14:01:21.413 に答える