Как ограничить отображаемую длину поля, возвращаемого в DB2 CLP (z/OS)?

Я разбираюсь в Unix, поэтому у меня есть скрипт, который я запускаю всякий раз, когда хочу запустить какой-нибудь SQL. Я вызываю DB2 со своим запросом и выгружаю стандартный вывод в файл. Очень по-неандертальски, но работает. У меня есть таблица с varchar(28672). Поле никогда не бывает таким длинным, но db2 форматирует его до ширины 28 КБ.

Поэтому, очевидно, я изменяю свой запрос, чтобы выбрать 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