0

2つのクエリの結果を比較しようとしています。1つは外部でAsteriskサーバーに対して行われた呼び出しの呼び出しIDを取得し(10桁)、もう1つはサーバーから接続された呼び出しIDを取得します(11桁)。アウトバウンドコールには、番号の前に「1」が付加されます。現在、次のようなステートメントを使用しています。

select data2, from_unixtime(time_id) day from queuemetrics.queue_log
where time_id > '1346475600' and (data2, time_id) in
(select dst, unix_timestamp(calldate) from asteriskcdrdb.cdr
where calldate > '2012-09-01' and lastdata like <blocked for privacy>)
order by day;

data2は10桁の数字を保持する列でdst、11桁の数字を保持します。列の2〜11番目の文字のみをパターンマッチングできる方法はありますか?最初のものをスキップするには?明らかにLIKEまたはRLIKEは便利ですが、これを機能させるには、ネストされたクエリを維持する必要があります。どんな助けでも素晴らしいでしょう。また、との奇妙な使用法にも注意を払わないfrom_unixtimeunix_timestampください。検索を機能させるために同じ形式で時間を必要とするかどうかを考えて実験していました。重要ではありません。

4

2 に答える 2

0

RIGHTを使用して、文字列の右端の文字を抽出できます。

RIGHT(your_field_here, 10);

文字列の最初と最後に無視したい文字がある場合は、SUBSTRを使用できます。

SUBSTR(your_field_here, 2, 10);

その場合、クエリは次のようになります。

SELECT data2, FROM_UNIXTIME(time_id) day FROM queuemetrics.queue_log
WHERE time_id > '1346475600' AND (data2, time_id) IN
(SELECT SUBSTR(dst, 2, 10), UNIX_TIMESTAMP(calldate) FROM asteriskcdrdb.cdr
WHERE calldate > '2012-09-01' AND lastdata LIKE <blocked for privacy>)
ORDER BY day;
于 2012-09-08T16:58:39.483 に答える
0

dstフィールドの先頭の数字を削除してみませんか?

于 2012-09-08T17:08:00.430 に答える