【发布时间】:2011-08-06 06:37:24
【问题描述】:
我在 SQL Server 2005 表中的一列包含字母数字值,我想根据字母数字排序对行进行排序。 HOUSE_NO 是一个 NVARCHAR 列,它包含如下值:
- 2/1 NAWOG
- 1/1
- 2/1 A
- 1/2 A GOLCHA
- 1
- 2
- SHASWAT KUTIR
- 3 A
- 11/1
- 11
我希望它们被排序为:
- 1
- 1/1
- 1/2 A GOLCHA
- 2
- 2/1 A
- 2/1 NAWAG
- 3 A
- 11
- 11/1
- SHASWAT KUTIR
我尝试了很多方法,但都没有成功。我需要你的建议
【问题讨论】:
-
@zerkms:
nvarchar暗示 Oracle (AFAIK)。 -
@mu 太短:实际上不是 (
mysql> create table a (b nvarchar(1)); Query OK, 0 rows affected (0.11 sec)) 但您似乎猜对了 ;-) -
我猜 2/2 也必须在 2/11 之前到来。让我想知道“3 A”、“3/1”和“3A”的“自然”排序顺序如何。将所有这些内容放入查询中将是一项有趣的练习,但这将是一个可怕的练习,可能具有戏剧性的表现。您应该以某种方式将此编号方案规范化为多列或添加专门用于创建排序值的列
标签: sql sql-server-2005 natural-sort