2009-03-11 32 views
0

私はInterbaseにとって面白い問題があります。私はレコードセットを持っていますが、とりわけ、各レコードのデータ入力フィールドとタイムスタンプがあります。私は最後のフィールドは、の線に沿って読みます一日の終わりになるように、レコードからタイムスタンプをコピーできるようにしたいと思います:フィールドが表示されたときにこのようにDBテーブル内のデータをSQL文でマージする方法はありますか?

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

最終的な外観である。

time of entry 

data that was entered 

私はフロントエンドソフトウェアにアクセスできないため、悲しいことに、これはデータベースレベルで実行する必要があります。

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

これまで、UPDATE命令(データ|追加情報はすべてのレコードで同じです)と連結するために||を使用して文字列の最後に固定データを追加することに成功しましたが、フォーマット:。。

result of search||original data 

すべてのヘルプははるかに高く評価されるだろう

+0

テーブルの構造を表示すると役立ちます。例えば。テーブルを定義するために使用した "CREATE TABLE"ステートメント。データ型、フィールド名などを知っている方は、より正確な回答を得ることができます。 –

答えて

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

これは(DATA_ENTRY_FIELDは、連結のための部屋を持っていて)動作するはずですあなたが持っているものの問題について、より具体的にしてくださいそれが動作しない場合。 - 実際にはあるべき

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

は(InterBaseはキャリッジリターンとして \nを受け入れると仮定すると:あなたはキャリッジリターンをしたい場合、あなたはあまりにもそれらを挿入する必要がありますが、

0

クレイグの答えは、動作するはずです\rまたはWindows上でも\r\nが、\nはかなり標準です。)

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

+0

いいえ、IBは '\ n'を認識しません。 OTOHでは、実際のキャリッジリターンを認識します(これはコメント内では表示できませんが、 'Enter'の後に 'Enter'の後に改行を追加すると想像してください)。 –

関連する問題