这个问题可能已经回答了,但是,我可能要解决另一个问题。
我有以下字符串:'123456'和以下范围:05 - 10
如何将字符串与范围内的每个数字连接起来,所以我有: 12345605 12345606 12345607 12345608 12345609 12345610
我将有一个存储过程,该过程接受6位数字的代码,范围内的最小和最大数字。然后,我将不得不对数据进行某种处理。可以稍后插入或删除它,或进行其他任何操作。
这就是存储过程中的内容:
declare
@firstSix varchar(6),
@min varchar(2),
@max varchar(2)
To do that I have started to write a loop:
WHILE(CAST(@min AS int) <= CAST(@max AS int)
BEGIN
--here I will need to write a logic that concatenates the string.
SET @min = @min + 1
SELECT @firstSix
END
因此,使用以下输入
exec myProcedure '123456', '05', '10'
我将获得以下输出:
12345605
12345606
12345607
12345608
12345609
12345610
或使用以下输入
exec myProcedure '123456', '15', '20'
我将得到以下输出:
12345615
12345616
12345617
12345618
12345619
12345620
我可能需要确定一个逻辑,以判断范围内的值是否带有前导零或类似的数字
这里最好的方法是什么?
答案 0 :(得分:0)
您要递归 CTE :
function makeRequest(method, url) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onload = function() {
if (this.status >= 200 && this.status < 300) {
resolve(xhr.response);
} else {
reject({
status: this.status,
statusText: xhr.statusText
});
}
};
xhr.onerror = function() {
reject({
status: this.status,
statusText: xhr.statusText
});
};
xhr.send();
});
}
let url1 = 'https://baconipsum.com/api/?type=all-meat¶s=3&start-with-lorem=1&format=json';
let url2 = 'https://baconipsum.com/api/?type=all-meat¶s=3&start-with-lorem=1&format=json'
Promise.all([makeRequest('GET', url1), makeRequest('GET', url2)])
.then(values => {
debugger;
console.log(values);
});
如果后缀较大,默认情况下具有with cte as (
select @firstSix as firstSix , cast(@min as int) as mn, cast(@max as int) as mx
union all
select firstSix, mn + 1 , mx
from cte
where mn < mx
)
select concat(firstSix, right(concat('0', mn), 2))
from cte c;
递归级别,然后查询提示100
。
编辑:使用LOOP
option (maxrecursion 0)