2016-12-09 17 views
0

只是看看這個代碼...它從我的小時數......仍然不工作!不能添加一個nvarchar到另一個

DECLARE @Code NVARCHAR 
DECLARE @MaxCode BIGINT = 81000 
SELECT @Code = CONVERT(NVARCHAR,CONVERT(BIGINT,SUBSTRING(CONVERT(NVARCHAR,@MaxCode),2,LEN(CONVERT(NVARCHAR,@MaxCode) - 1)))+1) 
SELECT N'D' + @Code,CONVERT(NVARCHAR,CONVERT(BIGINT,SUBSTRING(CONVERT(NVARCHAR,@MaxCode),2,LEN(CONVERT(NVARCHAR,@MaxCode) - 1)))+1) 

有結果,美國可以相信:

D1 | 1001 

我也嘗試SET過,但什麼都沒有改變

+0

你在做什麼,你期待的結果是什麼? – Kateract

+0

我確實期望D1001的第一列。 –

+1

[This](http://stackoverflow.com/a/20180012/92546)答案有助於澄清事情。 – HABO

回答

2

嘗試:

DECLARE @Code NVARCHAR(2000) 

看看會發生什麼。

+0

它確實工作,謝謝你。 –

+0

@MohammadHosseinGhaebi請將此標記爲答案,如果它確實幫了你的忙。 –

1

如果不指定長度Nvarchar同時宣佈Variable默認1將其長度

聲明@Code NVARCHAR將是相同@Code NVARCHAR(1)


如果不指定長度NvarcharCAST/CONVERT默認30將其長度

SELECT @Code = CONVERT(NVARCHAR,..)將相同SELECT @Code = CONVERT(NVARCHAR(30),..)


所以總是用NVARCHAR/Varchar使用最多我作爲SQL Server將只保留了的炭量的內存,而不是固定的合適長度

0
DECLARE @Code NVARCHAR(MAX) 

數字字符,例如DECLARE @Code NVARCHAR(1000)。