proszę, proszę uniknąć odwoływania stoły systemy, w szczególności tabele systemowe bazy danych systemu. W rzeczywistości, wybrana odpowiedź powyżej prawdopodobnie nie będzie kompilacji w Visual Studio 2013 Database Projekt
zmienne Tabela są w porządku, ale rekursji z CTE jest odpowiedź:
DECLARE @str VARCHAR(max)
SET @str = 'QWERTY AnotherWord'
WITH Split(stpos,endpos)
AS(
SELECT 1 AS stpos, 2 AS endpos
UNION ALL
SELECT endpos, endpos+1
FROM Split
WHERE endpos <= LEN(@str)
)
SELECT
'character' = SUBSTRING(@str,stpos,COALESCE(NULLIF(endpos,0),LEN(@str)+1)-stpos)
,'charindex' = stpos
FROM Split
Powiedział, że wykorzystanie do powyższy kod polega na uzyskaniu tabeli pełnej liter reprezentujących różne uprawnienia dla użytkownika. To nie jest sposób, aby to zrobić. Stwórz tabelę z identyfikatorem, kodem dostępu i opisem, a następnie stwórz tabelę łączącą między tabelą użytkowników a nową tabelą uprawnień. to daje ci te same możliwości i nie sprawia, że rozwiązujesz głupie problemy w ten sposób.
To jest duplikatem http://stackoverflow.com/questions/697519/split-function-equivalent-in-tsql –
Niestety, google i stackoverflow wyszukiwanie nie zwróciło żadnych Userful wyników. Z drugiej strony widzę, że udzielona tu odpowiedź jest lepsza i szybsza, i lepiej pasuje do mojej potrzeby rozwiązania. Sądzę też, że jest to bardziej proste. –