Как мога да огранича дължината на показване на поле, върнато в DB2 CLP (z/OS)?

Аз съм Unix хак, така че имам скрипт, който изпълнявам, когато искам да стартирам някакъв SQL. Извиквам DB2 с моята заявка и изхвърлям stdout във файл. Много неандерталски, но работи. Имам таблица с varchar(28672) в нея. Полето никога не е толкова дълго, но db2 го форматира до 28k ширина.

Така че очевидно променям заявката си, за да избера substr(field, 1,100), за да получа само началото на полето и това е, което връща, само първите 100 знака, но все още форматира полето, което извежда, до 28672 знака. Някаква идея как да го форматирам до размера на изходните данни?


person stu    schedule 05.04.2013    source източник


Отговори (1)


CLP за DB2 винаги ще връща максималната сума, необходима за поле в своя изход въз основа на дължината на колоната.

Можете обаче да прехвърлите вашето поле към друг размер VARCHAR:

SELECT CAST(your_field AS VARCHAR(100)) FROM your_table

Ако направите това, вероятно ще искате да потиснете предупрежденията за съкращаване на знаци, което можете да направите с помощта на командата CLP UPDATE COMMAND OPTIONS:

UPDATE COMMAND OPTIONS USING w OFF
person bhamby    schedule 05.04.2013
comment
Ти си шибан гений. Благодаря. - person stu; 06.04.2013
comment
страхотно! бонус: използвайте SELECT CAST(your_field AS VARCHAR(100)) as your_field FROM your_table, за да запазите името на колоната. - person lmsurprenant; 16.11.2018