У меня была та же проблема (но, возможно, у меня была другая конфигурация конфигурации - хотя, казалось, она была простой ванилью)
Строки ниже показывают мою последнюю ошибку и мое «исправление». (Благодаря вышеупомянутым предложениям - Джошуа)
[user1@hoho6 RubymineProjects]$ svn checkout svn://localhost/home/user1/DummySVNrepo
svn: URL 'svn://localhost/home/user1/DummySVNrepo' doesn't exist
[user1@hoho6 RubymineProjects]$ svn checkout svn+ssh://localhost/home/user1/DummySVNrepo
The authenticity of host 'localhost (::1)' can't be established.RSA key fingerprint is 10:8d:10:04:00:02:b1...
Are you sure you want to continue connecting (yes/no)? yes
user1@localhost's password:
user1@localhost's password:
A DummySVNrepo/test
A DummySVNrepo/test/unit
... etc
Да, это возможно с CROSS APPLY (SQL 2005 +):
with testdata (CommaColumn, ValueColumn1, ValueColumn2) as (
select 'ABC,123', 1, 2 union all
select 'XYZ, 789', 2, 3
)
select
b.items as SplitValue
, a.ValueColumn1
, a.ValueColumn2
from testdata a
cross apply dbo.Split(a.CommaColumn,',') b
Примечания:
Вы должны добавить индекс к набору результатов вашего разделенного столбца, чтобы он возвращал два columns, IndexNumber и Value.
Встроенные реализации с числовой таблицей обычно быстрее, чем ваша процедурная версия здесь.
например:
create function [dbo].[Split] (@list nvarchar(max), @delimiter nchar(1) = N',')
returns table
as
return (
select
Number = row_number() over (order by Number)
, [Value] = ltrim(rtrim(convert(nvarchar(4000),
substring(@list, Number
, charindex(@delimiter, @list+@delimiter, Number)-Number
)
)))
from dbo.Numbers
where Number <= convert(int, len(@list))
and substring(@delimiter + @list, Number, 1) = @delimiter
)
Erland Sommarskog имеет окончательную страницу по этому поводу, я думаю: http : //www.sommarskog.se/arrays-in-sql-2005.html
Исправьте это правильно - сделайте этот столбец связанной таблицей. Из скалярных столбцов, разделенных запятыми, ничего хорошего не получится.
+1 к комментариям против CSV, но если вы должны это сделать, вы должны использовать CROSS APPLY или OUTER APPLY.
Вы можете попробовать что-то вроде:
SELECT s.Items AS SplitValue, ValueColumn1, ValueColumn2
FROM MyTable, Split(CommaColumn,',') AS s