使用额外列查看将列附加到零填充ID

时间:2014-01-31 21:45:55

标签: sql-server tsql

我创建了下表(tb_company):

enter image description here

下一步是创建一个从tb_company派生的视图,其中“id”列和“companyName”列连接为“id_and_companyName”,如下所示:

enter image description here

所有这一切的问题在于我在sharepoint应用程序上使用视图表,当我显示数据时,它按以下方式排序:

enter image description here

基本上这是一个字符/字母顺序,但这不是我想要实现的。

我想在“id_and_companyName”列中添加一些预字符串字符,以便我可以得到这样的东西

enter image description here

如何通过TSQL脚本实现此目的?我想用这样的列创建一个视图。 通过这种方式,我将解决我的排序问题。

感谢。

2 个答案:

答案 0 :(得分:2)

你可以填零像RIGHT('00000' + CAST(id as VARCHAR), 5)这样的数字。

答案 1 :(得分:1)

我从您的问题中假设您的id值不会超过4位数。如果是这样的话:

CREATE VIEW dbo.myview AS
  SELECT id, companyName, 
    id_and_companyName = RIGHT(REPLICATE('0',4) + CONVERT(VARCHAR(4),id),4)
    + ' ' + companyName
  FROM dbo.tablename;

否则,将4的实例增加到其他内容。另外,请务必不要将ORDER BY子句与视图定义本身一起存储;指定引用视图的查询中的顺序。

您也可以考虑将其设为计算列,而不是在视图中计算它。这为您提供了进行此计算的其他机会;在存储时间或查询时间。例如。你可以坚持和/或索引列。

最后,如果这只是为了排序,我不知道为什么你不能只说:

ORDER BY id, companyName;

或者,如果由于某种原因id当前是字符串数据类型,您可以更改它,或使用:

ORDER BY CONVERT(INT,id), companyName;

如果您的数据不正确,则可能会中断(更有理由解决此问题)。