admin

如何在TSQL中将varchar字段右对齐?

sql

我在名为MyCode的列中具有“ 11(space)”,“ 109”,“ X(space)(space)”,“ 9(space)(space)”,“
15(space)”等值。 varchar(3)。

当我订购它们时,我按ASC顺序订购它们时,在11之前会出现11的问题。

我想通过在前面添加空字符来使值向右对齐,以便产生ORDER:

 " 11"

 ..

"109"

问题 :如何从MyTable中写入SELECT MyChar,以便对于值“
1(space)(space)”应返回“(space)(space)1”等?



阅读 234

收藏
2021-06-07

共1个答案

admin

使用此选项可始终将前导空格填充到固定长度

SELECT RIGHT(
      SPACE(5) + 
      REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(MyChar), CHAR(160), ''), CHAR(9), ''), CHAR(10), ''), CHAR(13), '')
    , 5) AS Justified
FROM MyTable 
ORDER BY Justified

如果您更改一个5,则需要同时更改两个

编辑:添加了RTRIM

编辑2:添加硬空间+其他不可打印的检测

这给你什么?

SELECT ASCII(RIGHT(MyChar, 1) FROM MyTable
2021-06-07