On 18.02.2018 00:36, Richard Hipp wrote:

The current behavior of the printf() function in SQLite, goofy though
it may be, exactly mirrors the behavior of the printf() C function in
the standard library in this regard.

SQLite3 is not C. SQLite3 text storage is always Unicode. Thus SQL text
processing functions should work on Unicode. The current implementation
of the SQLite3 SQL printf() can not reliably be used for string padding.
And there is no simple alternative, AFAICS.

PostgreSQL returns 4 in all cases:

select
   length(format ('%4s', 'abc')),
   length(format ('%4s', 'äöü')),
   length(format ('%-4s', 'abc')),
   length(format ('%-4s', 'äöü'))

MySQL has lpad() and rpad() to achieve the same and also returns 4 in
all cases:

select
   length(lpad ('abc', 4, ' ')),
   length(lpad ('äöü', 4, ' ')),
   length(rpad ('abc', 4, ' ')),
   length(rpad ('äöü', 4, ' '))

I strongly believe that SQLite3 should follow suit.

Ralf
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to