如何插入前导空格,然后将值插入 SQL SERVER varchar(10) 中的字段

问题描述 投票:0回答:1

我正在使用旧程序的数据库(sql server),并且想要在键为varchar(10)的SUPPLIERS表上进行批量插入。问题是旧程序用前导空格填充键来完成 10 个字符,例如(下划线代表空格) ='_______310','_______311'...,'______1000'。

我尝试将值转换为 char(10) 但它在路径中添加了空格。我也尝试过使用 space 函数,但问题是对于键 310,我必须添加 7 个空格,但对于键 1000、6,因此在简单的 select 或 insert 语句上使此函数动态化将非常凌乱。

如果没有这些空格,这个应用程序将无法正常工作,所以您知道如何在简单的选择或插入语句上添加这些空格吗?

谢谢

sql sql-server t-sql
1个回答
1
投票

您可以将 RIGHT 函数与 SPACE 函数一起使用来动态计算并插入适当数量的前导空格。以下是在 SQL 语句中执行此操作的方法:

INSERT INTO SUPPLIERS (key_column, other_columns)
VALUES (RIGHT(SPACE(10) + '310', 10), other_values);

对于批量插入:

INSERT INTO SUPPLIERS (key_column, other_columns)
SELECT RIGHT(SPACE(10) + CAST(key AS VARCHAR(10)), 10), other_columns
FROM (
    SELECT '310' AS key, other_value1 AS other_columns
    UNION ALL
    SELECT '311', other_value2
    UNION ALL
    SELECT '1000', other_value3
) AS batch;

RIGHT(SPACE(10) + CAST(key AS VARCHAR(10)), 10)
- 将 10 个空格与键连接起来,然后取最右边的 10 个字符,确保键有前导空格。

© www.soinside.com 2019 - 2024. All rights reserved.