文字列 (フォルダー パスを表す) があります。レベルの最大数はわかっています (サブサブフォルダー) レベルの最小数はわかっています (ルートにはファイルが含まれていません)。フォルダ名にはスペースを含めることができます。例の a がフォルダーなのかファイルなのかが示されていません..............その文字列を列に分割したい。
CREATE TABLE TESTDATA([path] [nvarchar](max))
INSERT INTO TESTDATA (path) VALUES (N'/a/)
INSERT INTO TESTDATA (path) VALUES (N'/a/ab/filename1)
INSERT INTO TESTDATA (path) VALUES (N'/a/ab/abc/filename2)
INSERT INTO TESTDATA (path) VALUES (N'/a/ab/abc/filename3)
INSERT INTO TESTDATA (path) VALUES (N'/a/ab/abc/abcd/filename4)
INSERT INTO TESTDATA (path) VALUES (N'/a/ac/ac e/filename5)
TESTDATA は次のようになります
|----------path-----------------|
/a
/a/ab/filename1
/a/ab/abc/filename2
/a/ab/abc/filename3
/a/ab/abc/abcd/filename4
/a/ac/ac e/filename5
しかし、私はそれが次のように見える必要があります
filename--|--root--|--folder--|--subfolder--|--subsubfolder--|
----------|--------|----------|-------------|----------------|
filename1-|---a----|----ab----|
filename2-|---a----|----ab----|-----abc-----|
filename3-|---a----|----ab----|-----abc-----|
filename4-|---a----|----ab----|-----abc-----|-------abcd-----|
filename5-|---a----|----ac----|-----ac e----|
これについてどうすればいいですか?
私は何かをすべきだと思っていますSUBSTRING
がCHARINDEX
、私は何千ものことを試しました。それを正しくすることはありません。SUBSTRING
文字列にスペースが含まれていると、文字列の検索が停止するようです。