我在名为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”等?
使用此选项可始终将前导空格填充到固定长度
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,则需要同时更改两个
5
编辑:添加了RTRIM
编辑2:添加硬空间+其他不可打印的检测
这给你什么?
SELECT ASCII(RIGHT(MyChar, 1) FROM MyTable