まで進む17個の文字を削除した
Even More Data
を表示するには、以下の結果
\DATA\More Data\Even More Data\Data 1
から抽出しようとしています最初の17文字を使用する必要があります。
RIGHT(Path, LEN(Path) - 17)
パスが35文字より長い場合は正しくk
最初のバックスラッシュ、使用までの文字列を返すためとして:これは言う
SELECT DISTINCT SUBSTRING(Path, 18, CHARINDEX('\', Path, 18) - 18)
FROM [DB].[dbo].[Projects]
WHERE [Path] like '\DATA%'
AND [Deleted] = '0'
:1で
SELECT LEFT(Detail, CHARINDEX('\', Detail)) FirstFolder, Detail, Path
FROM
(
SELECT distinct RIGHT(Path, LEN(Path) - 17) AS Detail, Path
FROM [DB].[dbo].[Projects]
Where [Path] like '\DATA%'
AND [Deleted] = '0'
) a
またはすべて
- が
path
から部分文字列を抽出します
- キャラクター18で始まる
- 文字列の長さは、文字18で始まる
path
の最初のバックスラッシュの位置を見つけることによって計算されます(18番目の文字で検索を開始したので、 元の文字列のない開始)
更新:
あなたはそのパスを保証することはできません場合@etsaは正しく、指摘するように、少なくとも18文字の長さで、文字の18の後にバックスラッシュが含まれていますfor ev ERY行は、あなたがこの基準を満たしていない行のみを返すために、次の使用する必要があります。
SELECT DISTINCT SUBSTRING(Path, 18, CHARINDEX('\', Path, 18) - 18)
FROM [DB].[dbo].[Projects]
WHERE [Path] like '\DATA%'
AND [Deleted] = '0'
AND CHARINDEX('\', Path, 18) > 0
http://meta.stackoverflow.com/questions/271055/tips-for([良いSQLの質問をする方法]サンプルデータを提供してくださいとお読みください(271056)と[MCVEの作成方法](http://stackoverflow.com/help/mcve)を参照してください。ちょうどヒント: 'CHARINDEX'はあなたの友人です... – Shnugo
charindex()は、文字の最初の位置を示し、left()またはsubstring()に入力します。 –
文字列Pathは常に17文字より長いですか? – etsa