我创建了下表(tb_company):
下一步是创建一个从tb_company派生的视图,其中“id”列和“companyName”列连接为“id_and_companyName”,如下所示:
所有这一切的问题在于我在sharepoint应用程序上使用视图表,当我显示数据时,它按以下方式排序:
基本上这是一个字符/字母顺序,但这不是我想要实现的。
我想在“id_and_companyName”列中添加一些预字符串字符,以便我可以得到这样的东西
如何通过TSQL脚本实现此目的?我想用这样的列创建一个视图。 通过这种方式,我将解决我的排序问题。
感谢。
答案 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;
如果您的数据不正确,则可能会中断(更有理由解决此问题)。