2016-12-14 2 views
0

まず、テーブルtblSampleIDをデータ型INTの列として持っています。あなたはIDが行を持っていないかどうかを観察MAX(Id)=0後、0を返すか、他その次の挿入がより大きくなりますので、MAX(ID)の値を返すようここデータ型のMAX値を見つけるVarchar

DECLARE @Id INT 

SELECT @Id = MAX(Id) 
FROM tblSample 

IF @Id IS NULL 
BEGIN 
    SELECT 0 as Id 
END 
ELSE 
    SELECT MAX(Id) as ID FROM tblSample 

:AutoにすべてのトランザクションのためのIDを生成し、私は、ストアドプロシージャを作成しました最大(ID)。

これで問題ありませんが、現在はカラムIDとデータ型VARCHARを持っていますが、私はそれをどのようにする必要がありますか?

+0

私はそこに「X」という名前の列があるといくつかの列を持つ2行がユーザーに表示され、彼は上のクリックしたときに、ユーザがデータを入力するようにユーザーが2としてxの値を入力する元のための明確あなたを説明しましょうそれらの2つの行に同じIDを割り当てる必要があります –

+1

VARCHAR型でも同じロジックが有効です。上記のコードの問題点は何ですか? – Susang

+0

ええ、私はbtw MAX(varchar)とVARCHAR(max)が混乱していました...ありがとうございました –

答えて

2

コードは正常に見えるを使用できると思う:

DECLARE @Id VARCHAR(10) 
+2

[蹴る悪い習慣:(長さ)なしでVARCHARを宣言](http://sqlblog.com/blogs/aaron_bertrand/archive/2009あなたはあなたが使用する 'varchar'変数とパラメータの長さを常に**与えてください。 –

+0

ありがとうそれに応じて編集しますが、私はデフォルトサイズのままにしました。本当に便利です – Susang

1

は、私はそれがまたVARCHARで動作するはずですが、私の提案は、それがどこかの操作で競合し得ることはありませんので、同じデータ型でも格納変数を使用することですので、あなたがMAX(CAST(varcharcolumn AS Int))

0
DECLARE @Id INT 
SELECT @Id=MAX(Id) FROM tblSample 
IF @Id IS NULL 
BEGIN 
SELECT 'Your_VarCharValue' + CAST(0 AS VARCHAR) as Id 
END 
ELSE 
SELECT 'Your_VarCharValue' + CAST(MAX(Id) AS VARCHAR) as ID FROM tblSample 
関連する問題