Commit f9bd30fb authored by Marc Gravell's avatar Marc Gravell

Simplify the string_split implementation

parent c6d4379b
......@@ -1990,13 +1990,13 @@ public static void PackListParameters(IDbCommand command, string namePrefix, obj
private static bool TryStringSplit(ref IEnumerable list, int splitAt, string namePrefix, IDbCommand command)
{
if (list == null || splitAt < 0) return false;
if (list is IEnumerable<int>) return TryStringSplit<int>(ref list, splitAt, namePrefix, command, "int not null",
if (list is IEnumerable<int>) return TryStringSplit<int>(ref list, splitAt, namePrefix, command, "int",
(sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture)));
if (list is IEnumerable<long>) return TryStringSplit<long>(ref list, splitAt, namePrefix, command, "bigint not null",
if (list is IEnumerable<long>) return TryStringSplit<long>(ref list, splitAt, namePrefix, command, "bigint",
(sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture)));
if (list is IEnumerable<short>) return TryStringSplit<short>(ref list, splitAt, namePrefix, command, "smallint not null",
if (list is IEnumerable<short>) return TryStringSplit<short>(ref list, splitAt, namePrefix, command, "smallint",
(sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture)));
if (list is IEnumerable<byte>) return TryStringSplit<byte>(ref list, splitAt, namePrefix, command, "tinyint not null",
if (list is IEnumerable<byte>) return TryStringSplit<byte>(ref list, splitAt, namePrefix, command, "tinyint",
(sb, i) => sb.Append(i.ToString(CultureInfo.InvariantCulture)));
return false;
}
......@@ -2024,12 +2024,12 @@ private static bool TryStringSplit(ref IEnumerable list, int splitAt, string nam
else
{
varName = variableName;
return "(select val from " + variableName + "_TSS)";
return "(select cast([value] as " + colType + ") from string_split(" + variableName + ",','))";
}
}, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant);
if (varName == null) return false; // couldn't resolve the var!
command.CommandText = "declare " + varName + "_TSS table(val " + colType + ");insert " + varName + "_TSS (val) select value from string_split(" + varName + ",',');" + sql;
command.CommandText = sql;
var concatenatedParam = command.CreateParameter();
concatenatedParam.ParameterName = namePrefix;
concatenatedParam.DbType = DbType.AnsiString;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment