无法将nvarchar添加到另一个

时间:2016-12-09 23:46:49

标签: sql sql-server tsql

看看这段代码......它花了我几个小时......但仍然没有工作!!!

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,但没有改变

3 个答案:

答案 0 :(得分:2)

尝试:

DECLARE @Code NVARCHAR(2000)

看看会发生什么。

答案 1 :(得分:1)

如果您未指定Nvarchar长度,则默认声明Variable 1将是其长度

声明@Code NVARCHAR将与@Code NVARCHAR(1)

相同

如果您未在Nvarchar CAST/CONVERT中指定{{1>}的长度,则默认为30

SELECT @Code = CONVERT(NVARCHAR,..)SELECT @Code = CONVERT(NVARCHAR(30),..)

相同

所以始终使用NVARCHAR/Varchar长度适当

答案 2 :(得分:0)

var myKeys = [{a:1, b:10}, {a:5, b:8}, {a:3, b:2}, {a:1, b:6}];

let n = index = 0;

for (let [key, prop, curr] of myKeys.entries()) {
  if (({b:curr} = prop, curr) < n || !n) [n, index] = [curr, key];
}

let {a} = myKeys[index]; // call `delete n` here if `n`:`2` not needed;

console.log({a}); 

我使用max作为SQL SERVER只会为char数量而不是固定数字char保留内存,例如DECLARE @Code NVARCHAR(1000)。