powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Выравнивание строк
6 сообщений из 6, страница 1 из 1
Выравнивание строк
    #37270909
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!

Есть ли в DB2 функция выранивания строки - влево, по центру, вправо? Например, из значения 'Hello, World!' мне нужно получить строку 20 символов, где значение будет выровнено вправо - ' Hello, World!'. Как это можно сделать?

Спасибо.
С уважением, Семен Попов
...
Рейтинг: 0 / 0
Выравнивание строк
    #37271157
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen Popov,

LTRIM , RTRIM
...
Рейтинг: 0 / 0
Выравнивание строк
    #37271231
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
const64Semen Popov,

LTRIM , RTRIM Это Вы говорите об обрезании пробелов в строке. А мне как раз нужно дополнить пробелами спереди, чтобы получилась строка из 20 символов. Пока выравнивание вправо делаю так:
Код: plaintext
space( 20 -length('Hello, World!')) || 'Hello, World!'

А как сделать выравнивание по центру - пока не думал.
...
Рейтинг: 0 / 0
Выравнивание строк
    #37271305
const64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semen Popov,

Да, что-то не в тему... :(

По центру по аналогии с Вашим вариантом будет как-то так:
Код: plaintext
space( 10 -length('Hello, World!')/ 2 ) || 'Hello, World!' || space( 10 -length('Hello, World!')+length('Hello, World!')/ 2 )
...
Рейтинг: 0 / 0
Выравнивание строк
    #37271337
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
-- v9.x databases

-- padding the string on the both sides with pad char to total lenght of len chars
create function cpad(s varchar( 4000 ), len int, pad varchar( 1 ))
returns varchar( 4000 )
return 
  repeat(pad, case when len-length(s, codeunits16)> 0  then (len-length(s, codeunits16))/ 2  else  0  end)
||s
||repeat(pad, case when len-length(s, codeunits16)> 0  then int(ceil(dec(len-length(s, codeunits16))/ 2 )) else  0  end);

-- padding the string on the right with pad char to total lenght of len chars
create function rpad(s varchar( 4000 ), len int, pad varchar( 1 ))
returns varchar( 4000 )
return 
  s
||repeat(pad, case when len-length(s, codeunits16)> 0  then len-length(s, codeunits16) else  0  end);

Для v8, если вы хотите, чтобы была коректной работа с не ascii символами, тело ф-ции зависит от кодовой страницы базы.
В коде выше length(s, codeunits16) заменяется на:
для utf-8 базы: length(vargraphic(s))
для не utf-8 базы: length(s)
...
Рейтинг: 0 / 0
Выравнивание строк
    #37271473
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Всем спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Выравнивание строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]