左对齐输出到平面文件

时间:2015-01-19 17:34:30

标签: sql sql-server-2008

我已经编写了这个查询(sql 2008),并且由于某种原因,一旦上传到平面文件,我就无法让它左对齐。它是一个10个字符长度的条目,并且应该从记事本上当前起始位置开始5个空格。

REPLICATE(' ',10-LEN(
    ISNULL(
        CASE WHEN LTRIM(REPLACE(A.DIAGN1, '.','')) =''
            THEN NULL
            ELSE LTRIM(REPLACE(A.DIAGN1, '.',''))
        END
    , 'V689')
))+ISNULL(
        CASE WHEN LTRIM(REPLACE(A.DIAGN1, '.','')) =''
            THEN NULL
            ELSE LTRIM(REPLACE(A.DIAGN1, '.',''))
        END
    , 'V689') AS PRIME_DIAGN_CODE, --ISNULL(LEFT(' '+REPLACE(A.DIAGN1, '.',''), 10), LEFT(''+'V689',10))     -- Primary Diagnosis Code (10)

提前感谢你, 汗

1 个答案:

答案 0 :(得分:0)

这是一个10个字符长度的条目,但我不明白你的意思"应该从它当前的起始位置开始5个空格"如果你想让它左对齐...你想要它左对齐但缩进5个空格?

下面是获取10个字符串的脚本...我使用了下划线,因此很容易看到空格的位置......显然你需要用脚本中的空格替换下划线。

希望这会有所帮助 - 如果我误解了,请告诉我。顺便说一句,你需要@Username提及我们,否则我们不知道你提供了更多的信息.​​.....幸运的是我检查了。

declare @DIAGN1 varchar(10) = '1234'

select
    Right(REPLICATE('_',10) + ISNULL(LTRIM(REPLACE(@DIAGN1, '.','')),'V689'),10) as RightJust_PRIME_DIAGN_CODE,
    left(ISNULL(LTRIM(REPLACE(@DIAGN1, '.','')),'V689') + REPLICATE('_',10),10)  as LeftJust_PRIME_DIAGN_CODE