如何在SQL语句中正确修剪值

时间:2012-05-01 16:02:06

标签: c# asp.net sql-server

  

可能重复:
  Most efficient T-SQL way to pad a varchar on the left to a certain length?

我在使用sql语句进行语法修剪方面遇到了一些麻烦。这是我的sql声明,我惨遭失败:

 SqlCommand command = new SqlCommand("SELECT PID = TRIM([PID] & Right("00000000" & TRIM ([PID]),8) & ",END"), FROM dbo.MDRMASTER WHERE PARENTPID = @PARENTPID",con);

正如你所看到的,我一直在试验这个地方,但在我屠杀我的SQL语句之前,我回复了这个值:

 123456123456123456

我想要归还:

 00123456,00123456,00123456,END

那么用逗号分隔值的正确语法是什么,在语句的末尾添加一个单词,以及将值排序为某种格式。例如,数字应该都是8位数。返回是00000123还是01234567.非常感谢任何帮助或正确方向上的一点。

1 个答案:

答案 0 :(得分:1)

适用于此的SQL是

DECLARE @pidList VARCHAR(2000);

SELECT @pidList = COALESCE(@pidList + ',', '') + REPLICATE('0', 8 - DATALENGTH(MDRMASTER.PID)) + MDRMASTER.PID
FROM dbo.MDRMASTER
WHERE MDRMASTER.PARENTPID = @PARENTPID;

SELECT @pidList + ',END' AS PID;

不幸的是我无法测试通过SqlCommand()对象在一个字符串中传递这一切,但我不明白为什么如果你把命令用分号分隔成一个字符串就行不了。< / p>