我有一个长CSV字符串,最大长度为44,119个字符。我有一个SQL存储过程,接受1到6个参数,每个参数varchar(8000)
用于将长CSV分成多个参数并将其传递给存储过程。
我的存储过程运行正常,但是如何将长CSV分成不同的字符串变量,使它们不超过8000个字符的字符串长度?
例如:
string myLongCSV = "1,2,345,5674,234,22,34..." //a long CSV
我无法使用SubString (0, 8000)
,因为第8,000个字符可能会破坏长CSV中的数字,而不是逗号。
我想在C#中编写代码,使其将长CSV中的所有数字划分为不同的字符串变量,使每个变量的长度不超过8000个字符。
答案 0 :(得分:1)
如果可以,修改SQL存储过程以使用数据类型VACHAR(MAX)
的单个参数,因为它最多可存储2,147,483,647个字符。
如果不能,请使用String.Split
功能,如下所示:
string[] words = myLongCSV.Split(',');
foreach (string word in words)
{
// some logic here to construct your parameters and check their length.
}
答案 1 :(得分:0)
试试这个。
想法是获得第8,000个字符,如果它是一个数字,然后减少索引,直到它为','然后你可以Substring()
,如下所示:
string s = "123,45636...";
int index = 7;
while (true)
{
if (s[index] == ',')
{
s = s.Substring(0, index);
break;
}
else
{
index--;
}
}