RE: is it a bug?
От | Francis Solomon |
---|---|
Тема | RE: is it a bug? |
Дата | |
Msg-id | NEBBIFFPELJMCJAODNPKKEFECDAA.francis@stellison.co.uk обсуждение исходный текст |
Ответ на | is it a bug? ("He weiping" <laser@zhengmai.com.cn>) |
Список | pgsql-general |
Hi, I think you've misunderstood the purpose of the functions. They exist to *pad* the strings, not to truncate them. Your examples will both return 'laser' because char_length('laser') = 5 and you asked for a padded length of 4. Had you done this: select lpad('laser', 8, '*'); You would get this: ***laser ... and obviously with rpad() you would have seen 'laser***' instead. If you want to truncate strings, try this: select substring('laser' from 1 for 4); ... which will truncate to length 4, i.e. 'lase' I couldn't find a combination function that will perform both of these functions in one. However, you could try a construct like this: select rpad(substring('laser' from 1 for xx), xx, '*'); ... where 'xx' is the number of characters you want in the final string. I'm sure you could wrap a user-defined function around this to that you'd only have to feed in the number of characters once instead of twice. Perhaps someone else knows a better way of doing this? Hope this helps Francis Solomon >I'm using cvs-current, and testing those build-in function >according to the docs. >but it seems the "lpad", "rpad" don't work, >when I type: >select lpad('laser', 4, 'a'); >in psql, the result is still >'laser', the same with 'rpad', >Is it a bug or I'm mis-understaning the lpad and/or rpad functions? > >Regards > >Laser
В списке pgsql-general по дате отправления: