ディレクトリへの完全な UNC パスを含む一連のデータがあります。パスだけを選択したい (サーバー/IP を削除する)。これどうやってするの?
データ:
\\nas.home.example.com\dvd\My First Video
\\nas.office.example.com\business\Report1
\\nas.office.example.com\business\Report2
\\10.10.10.10\projects\proj1\images
\\10.10.10.10\projects\proj1\queries
\\10.10.10.10\projects\proj1\output
期待される結果 (先頭の の有無にかかわらず、\
気にしません):
\dvd\My First Video
\business\Report1
\business\Report2
\projects\proj1\images
\projects\proj1\queries
\projects\proj1\output
私は次のことを試しました(上記の入力の1つに固有):
SELECT RIGHT(('\\nas.home.example.com\dvd\My First Video'),
CHARINDEX('\', REVERSE('\\nas.home.example.com\dvd\My First Video')));
これは、最も内側のディレクトリ ( My First Video
) だけを返します。親を取得するためにオフセットを追加できますが、ディレクトリが正確にその文字数である場合にのみ機能します。
SELECT RIGHT(('\\nas.home.example.com\dvd\My First Video'),
CHARINDEX('\', REVERSE('\\nas.home.example.com\dvd\My First Video'))+4);
を返します\dvd\My First Video
。これは良いことです - その 1 つの値に対して。すべてのデータ値に対して機能するようにクエリを変更するにはどうすればよいですか?
実際には、これらのクエリのうち 2 つが必要になるのではないかと思います。1 つは DNS 名を持つサーバー用で、すべてが で終わり、.com
もう 1 つは IP アドレス用で、すべてが で始まります10.10