5

これは、先行ゼロで選択するためのコードです。

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

先行ゼロを含む値をAsset_no列に挿入するにはどうすればよいですか?

例として、Asset_no列に「1」を挿入するだけですが、コードでは「000001」が挿入されます。また、26のように2桁挿入すると、「000026」と挿入されます。長さは変わりません。これはSQLServerで可能ですか?

4

4 に答える 4

7

これを行う1つの方法は、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
于 2013-03-06T01:14:47.537 に答える
2

SQL Serverでパディングを実行する場合は、INSERTステートメントを使用して次のように実行できます。

DECLARE @Asset_no INT = 12;

INSERT INTO schemaAsset.SystemDefined (Asset_no)
  SELECT RIGHT('00000'+ CONVERT(VARCHAR(6),@Asset_No),6)
于 2013-03-06T01:15:14.893 に答える
0

以下のスクリプトを使用すると、テーブル内のすべての行の番号を列に入力できます。これにより、2000から始まる番号が表示されます。最初のエントリは0002000になります。

Declare @id varchar(15)  
set @id = '1999'  
update sometable  
set @id = id = replace(STR(@id + 1,7),' ', '0')  
go
于 2015-03-10T15:53:54.730 に答える
-2

Oracleの場合:

lpad(cast(NUMERIC_VAR as VARCHAR2(5 BYTE))、5、 '00000')

于 2014-08-01T20:25:54.517 に答える