2009-03-11 2 views
0

Interbase에 대한 흥미로운 문제가 있습니다. 나는 다른 것들 사이에 각 레코드에 대한 데이터 입력 필드와 타임 스탬프가있는 레코드 세트가 있습니다. 내가 마지막 필드의 라인을 따라 읽 하루의 끝에 있도록 기록에서 타임 스탬프를 복사 할 수 있도록하고 싶습니다 : 필드가 표시 될 때 따라서DB 테이블 내의 데이터를 SQL 문으로 병합하는 방법은 무엇입니까?

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

마지막 모습입니다 :

time of entry 

data that was entered 

슬프게도 프런트 엔드 소프트웨어에 액세스 할 수 없기 때문에 슬프게도 데이터베이스 수준에서이 작업을 수행해야합니다.

내가 선택할 수있는 유일한 해결책은 병합을 수행하고 레코드를 업데이트하기 위해 줄 단위로 적절한 SQL을 생성하는 사용자 지정 소프트웨어를 사용하는 것입니다. 하루에 수백 개의 레코드가 있기 때문에 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 ... 

이 (인터베이스는 캐리지 리턴으로 \n을 수용하는 것을 가정 : 당신은 캐리지 리턴을 원한다면, 당신은 너무 사람들을 삽입해야하지만

0

크레이그의 대답은 작동합니다 \r 또는 Windows도 \r\n하지만 \n 상당히 표준입니다.)

MySQL은 || 연결 연산자를 인식하지 못하는, 그래서 대신 CONCAT() 기능을 사용해야 할 것입니다. Interbase는 동일 할 수 있습니다.

+0

아니요, IB가 '\ n'을 인식하지 못합니다. OTOH, * 실제 * 캐리지 리턴을 인식합니다 (주석에 이것을 표시 할 수는 없지만 'Enter'를 누른 다음 '새 행에'따라하기 '를 상상해보십시오. 이상하지만 작동합니다. –

관련 문제