看看这段代码......它花了我几个小时......但仍然没有工作!!!
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 :(得分: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)。