如何使用SQL Server查询列出'AAA','AAB','AAC'.......'ZZZ'

时间:2015-11-29 16:47:45

标签: sql sql-server sql-server-2008 tsql

我需要更新表中的12.000条记录,以便将它们按顺序排列为'AAA','AAB','AAC'.....'ZZZ'。它应该是3个字符。

表格如下:

table_items

id - int (Identity)
name - nvarchar(50)
picking_order - nvarchar(3)

我需要用3个字符更新picking_order。如何在SQL Server中编写此脚本?

2 个答案:

答案 0 :(得分:3)

您可以使用ASCII()函数和一些算术:

with toupdate as (
      select t.*, row_number() over (order by id) - 1 as seqnum
      from t
     )
update toupdate
    set picking_order = (ascii(char('A') + seqnum / (26*26)) +
                         ascii(char('A') + (seqnum / 26) % 26) +
                         ascii(char('A') + seqnum % 26)
                        );

答案 1 :(得分:0)

这就是你可以做的事情 - 很长的路要走(戈登有一种非常酷的方式来做你想做的事)

  • 创建存储过程
  • 将变量设置为0
  • 使用65到90之间的while loop
  • 在其中,创建另一个while循环,从65到90
  • 在其中,创建另一个while循环,从65到90
  • 从表格中选择前1个id进入变量,其中id>变量
  • 更新表set field = char(loop-1-number)+ char(loop-2-number)+ char(loop-3-number)其中id = variable。请参阅http://sqlfiddle.com/#!3/9eecb7d/536

完成循环后,您的记录将会更新