powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / И какая же всетаки длинна VARCHAR2
3 сообщений из 53, страница 3 из 3
И какая же всетаки длинна VARCHAR2
    #39526608
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadПеречитал тему.Я тоже.
AmKadsavell пытался донести до сообщества странное поведение rpad-а в ситуации, аналогичной моей, но, похоже, ему это не удалось.Чтобы ему поверить, нужно было иметь аналогичное окружение под рукой, чтобы воспроизвести. К слову, у меня до сих пор нет.
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526622
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Bug 3151144 RPAD / LPAD give unexpected result with Cyrillic characters in UTF8" - регрессия?
...
Рейтинг: 0 / 0
И какая же всетаки длинна VARCHAR2
    #39526641
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
мда....
Трудно поверить в то, что за багом скрывается ошибочное прямое использование lengthb
У меня тоже нет "подходящего окружения".
Не затруднит ли тебя удовлетворить мое любопытство и проверить, что в целевом окружении
возвращает такой самописный rpad:
-- замена стандартного rpad
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
Function Rpad_u(str1 In Varchar2 
              , len In Pls_Integer
              , pad In Varchar2 
              )
  Return Varchar2          
Is

  istr_len Pls_integer;
  ipad_len Pls_integer;
  irep_tm  Pls_integer;

  ----------------   
  Function Replicate( px in Varchar2
                , pn In Pls_integer -- целая степень
                ) return Varchar2 
  Is

    degree Pls_integer;
    x_lc Long;
    mresult Long;
  Begin
    If pn = 0 Then return ''; End If;
    degree := pn; 
    x_lc := px;

    While BITAND(degree,1) = 0 
    Loop
      degree := Floor(0.5*degree);
      x_lc := x_lc||x_lc;
    End Loop; 
    mresult := x_lc;

    degree := Floor(0.5*degree);
    
    While degree != 0
    Loop
      x_lc := x_lc||x_lc;

      If BITAND(degree,1) != 0
        Then
          mresult := mresult||x_lc;
      End If;
      degree := Floor(0.5*degree);
    End Loop;
    Return mresult; 
  End;   
  ------------------------  
Begin 
  If len > 0 
    Then
    istr_len := length(str1);
    ipad_len := length(pad);
    irep_tm := ceil((len - istr_len) / ipad_len);
    
    Return Case When irep_tm > 0
                Then
                  substr(concat(str1, replicate(pad, irep_tm)), 1, len)
                When ipad_len > 0
                  Then   
                   substr(str1, 1, len)
                Else 
                  Null  
                End;  
  End If;    
  Return Null;
End;   
...
Рейтинг: 0 / 0
3 сообщений из 53, страница 3 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / И какая же всетаки длинна VARCHAR2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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