Re: Order By weirdness?

From: Carl Sopchak <carl(at)sopchak(dot)me>
To: pgsql-sql(at)lists(dot)postgresql(dot)org
Subject: Re: Order By weirdness?
Date: 2023-01-07 20:45:10
Message-ID: 1b6f965c-c97b-1b3f-e955-14402544979c@sopchak.me
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-sql

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Thanks, that did the trick.  The surprising thing in the link is
"Most locales would ignore the leading <code>#</code> for
sorting. "  I guess I've been around too long and hadn't noticed.
:-)<br>
</p>
<div class="moz-cite-prefix">On 1/7/23 15:38, Erik Brandsberg wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAFcck8GQXkUQGsTgtdD65_+9VMPkx8iW8t+_3Oe_=J3oyWf7QA(at)mail(dot)gmail(dot)com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">This will relate to collation order, which is
something that you can specify.  Please see:  <a
href="https://stackoverflow.com/questions/17225652/how-can-i-sort-the-postgres-column-with-certain-special-characters"
moz-do-not-send="true" class="moz-txt-link-freetext">https://stackoverflow.com/questions/17225652/how-can-i-sort-the-postgres-column-with-certain-special-characters</a></div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Jan 7, 2023 at 3:35 PM
Carl Sopchak &lt;<a href="mailto:carl(at)sopchak(dot)me"
moz-do-not-send="true" class="moz-txt-link-freetext">carl(at)sopchak(dot)me</a>&gt;
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>I'm seeing something (very) unexpected with ORDER BY.  If
I run this query:</p>
<p>select txt<br>
from ( values('x12345'), ('xz1234'), ('x23456'),
('xz2345'), ('x34567'), ('xz3456') ) a(txt)<br>
order by txt;</p>
<p>I get expected results with x&lt;#&gt; being sorted
before xz.  However, if I replace the z's with ~, giving</p>
<p>select txt<br>
from ( values('x12345'), ('x~1234'), ('x23456'),
('x~2345'), ('x34567'), ('x~3456') ) a(txt)<br>
order by txt;</p>
<p>I get this???</p>
<p>  txt   <br>
--------<br>
 x~1234<br>
 x12345<br>
 x~2345<br>
 x23456<br>
 x~3456<br>
 x34567<br>
</p>
<p>Which appears to mean that ~ is treated differently than
z (basically ~ is ignored).  Same if I use other special
characters, such as @.</p>
<p>Up until stumbling into this, I have never seen such
behavior from a database.  (Windows OS, yes, but I won't
go there...)  Character-based text always sorted in an
alphabetic order (which puts special characters in
different places in the ordering depending on encoding,
but it's consistent).</p>
<p>Two questions (which may be the same way of asking the
same question):</p>
<p>- How is this correct?  I can see where this could be
useful in limited scenarios, but IMHO it makes no sense as
a default sort order.<br>
</p>
<p>- What do I need to do to get a strictly character-based
sort in ORDER BY?</p>
<p>I am using postgres version 14.3 on Fedora 37.<br>
</p>
<p>Thanks for the help.</p>
<p>Carl</p>
<p><br>
</p>
</div>
</blockquote>
</div>
</blockquote>
</body>
</html>

Attachment Content-Type Size
unknown_filename text/html 3.6 KB

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Samed YILDIRIM 2023-01-07 21:01:09 Re: Order By weirdness?
Previous Message Erik Brandsberg 2023-01-07 20:38:16 Re: Order By weirdness?