将0填充到返回的查询并插入临时表

时间:2013-12-16 19:53:39

标签: sql sql-server

得到sql来填充0:Formatting Numbers by padding with leading zeros in SQL Server

我想要做的是从Navigator数据库表中获取用户订单历史记录。我们有一个流程将网站表中的订单放入导航器表中(因为需要为导航表格式化订单)。

我想查询网站表以使用用户ID从登录用户获取订单:

SELECT OrderID FROM db1.zm.dbo.zOrder WHERE AccountID = 631180(这会返回多个订单ID)

db1是服务器,zm是数据库。

返回的订单ID的格式类似于45655675等。我想将它们插入到临时表中,例如:Z0004565带有Z和足够的前导0来命中7位数字。

如何修改select语句呢?或者我可以。

填充0的SQL:SELECT REPLICATE('0', 7-LEN(4665)) + 4665

SQL关注评论:

DECLARE @OrderNumTable table (orderNum  varchar(20))

INSERT INTO @OrderNumTable EXEC( SELECT (''Z'' + REPLICATE(''0'', 7-len(OrderID)) + OrderID)FROM db1.zm.dbo.zOrder WHERE AccountID = 631180

2 个答案:

答案 0 :(得分:3)

SELECT  OrderID,
        'Z'+RIGHT('0000000'+CAST(OrderID AS VARCHAR(7)),7)
FROM db1.zm.dbo.zOrder 
WHERE AccountID = 631180

在问题编辑后更新

DECLARE @OrderNumTable table (orderNum  varchar(8))

INSERT INTO @OrderNumTable(orderNum)
SELECT 'Z'+RIGHT('0000000'+CAST(OrderID AS VARCHAR(7)),7)
FROM db1.zm.dbo.zOrder 
WHERE AccountID = 631180

答案 1 :(得分:2)

你能不能只在前面添加Z

SELECT 'Z' + REPLICATE('0', 7-LEN(OrderID)) + LTRIM(STR(OrderID))