0

Interbase に関して興味深い問題があります。とりわけデータ入力フィールドと各レコードのタイムスタンプを持つレコード セットがあります。レコードからタイムスタンプをコピーして、1 日の終わりに最終フィールドが次の行に沿って読み取られるようにしたいと考えています。

TIMESTAMP <Carriage return> <carriage return> Original data in field

したがって、フィールドが表示されたときの最終的な外観は次のようになります。

time of entry

data that was entered

残念ながら、フロント エンド ソフトウェアにアクセスできないため、これはデータベース レベルで行う必要があります。

私が思いついた唯一の解決策は、選択を行い、カスタムソフトウェアを使用してマージを実行し、適切な SQL を行ごとに生成してレコードを更新することです。1 日に数百件のレコードがあるため、これはかなり遅いため、SQL ベースのソリューションが理想的です。

過去に||、命令との連結に使用して文字列の末尾に固定データを追加することに成功しましたUPDATE(データ||すべてのレコードで同じ追加情報) が、次の形式でこれを機能させるのに問題があります。

result of search||original data 

どんな助けでも大歓迎です。

4

2 に答える 2

1
UPDATE FOO_TABLE
  SET DATA_ENTRY_FIELD = DATA_ENTRY_FIELD || TIMESTAMP_FIELD
WHERE ...;

これは機能するはずです (DATA_ENTRY_FIELD に連結の余地がある場合)。うまくいかない場合は、どのような問題が発生しているかを具体的に教えてください。

于 2009-03-12T00:59:58.683 に答える
0

クレイグの答えはうまくいくはずですが、改行が必要な場合は、それらも挿入する必要があります。

UPDATE  foo_table
SET     data_entry_field = timestamp || '\n\n' || data_entry_field
WHERE   ...

\n(Interbaseがキャリッジ リターンとして受け入れると仮定すると、これは実際には Windows\rでも同様である必要がありますが、かなり標準的です。)\r\n\n

||MySQL は連結演算子を認識しないため、CONCAT()代わりに関数を使用する必要があります。Interbaseも同じかもしれません。

于 2009-03-15T18:21:31.667 に答える