sql - 如何在 SQL Server 中插入前导零

标签 sql sql-server-2005 insert

这是选择前导零的代码:

SELECT RIGHT('00000'+ CONVERT(VARCHAR,Asset_No),6) 
  FROM schemaAsset.SystemDefined

如何向带有前导零的列 Asset_no 插入值?

示例是我只在 Asset_no 列中插入“1”,但在代码中,它会插入“000001”。而且当我插入两个数字(如 26)时,它会插入为“000026”。长度不变。这在 SQL Server 中可能吗?

最佳答案

一种方法是使用 INSTEAD OF扳机。

USE tempdb;
GO

CREATE TABLE dbo.whatever
(
  Asset_No VARCHAR(6)
);
GO

CREATE TRIGGER dbo.fix_whatever
ON dbo.whatever
INSTEAD OF INSERT
AS
BEGIN
  SET NOCOUNT ON;
  INSERT dbo.whatever(Asset_No /*, other columns */)
    SELECT RIGHT('000000' + CONVERT(VARCHAR(6), Asset_No), 6)
      /*, other columns */
    FROM inserted;
END
GO

INSERT dbo.whatever(Asset_No) SELECT '22';
GO

SELECT Asset_No FROM dbo.whatever;
GO

结果:
Asset_No
--------
000022

关于sql - 如何在 SQL Server 中插入前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237100/

相关文章:

PHP 数组作为单独的行插入到 MySQL 表中。

sql - 选择不同列上具有不同值的行

sql-server-2005 - 使用 TCP/IP 访问 SQL Server 2008 Express 数据库

mysql - 如何将将一列分成两列的 MySQL 查询结果添加到表中?

sql - 如何将数据库图从一台服务器移动到另一台服务器

SQL SELECT - 将多个值分组到单行上

php - Mysql从XML插入字段名称为 "hyphen"

update更新后的mysql触发器

sql - 索引查找外键不存在的记录

javascript - pg-promise 删除元组集的快速方法