2016-06-18 25 views
2

私は左にデータを取得しようとしています - 私は抽出テキスト

LocationName 
CCC-CC36-A 
5N-N577-A 
5N-N577-A 
5N-N577-A 
2T-225-A 
PE-020-A 

select 
LEFT(LocationName, LEN(LocationName) - CHARINDEX('-',LocationName)-1), 
EncounterNumber 
from #TubeRateQty 
+1

LEFT(LocationName、CHARINDEX( ' - '、LocationName)-1)、 EncounterNumber from #TubeRateQty – OldBoyCoder

+0

メッセージ537、レベル16、状態2、行124 無効な長さパラメーターがLEFTまたはSUBSTRING関数に渡されました。 – user3666224

+0

おそらくLEFT(LocationName、CHARINDEX( ' - '、LocationName))、EncTubeNumberから#TubeRateQtを選択する必要があります。しかし、私はsqlfiddleに現時点で何かをテストするように働くことはできません。すべての行に ' - 'が入っていますか? – OldBoyCoder

答えて

2
SELECT 
    LEFT(LocationName, ISNULL(NULLIF(CHARINDEX('-',LocationName),0), LEN(LocationName)+1)-1) 
,EncounterNumber 
from #TubeRateQty 
+0

メッセージ537、レベル16、状態2、行124 無効な長さパラメータがLEFTまたはSUBSTRING関数に渡されました。 – user3666224

+0

@ user3666224文字列が '-'でなければエラーになりました。その状況を処理するためのチェックがいくつか追加されました。 –

0
DECLARE @xml xml 

SELECT @xml =(
    SELECT CAST('<i><a>' + REPLACE(LocationName,'-','</a><a>') + '</a></i>' as xml) 
    FROM YourTable 
    FOR XML PATH('') 
) 

SELECT t.v.value('a[1]','nvarchar(100)'), 
     t.v.value('a[2]','nvarchar(100)'), 
     t.v.value('a[3]','nvarchar(100)') 
FROM @xml.nodes('/i') as t(v) 

出力以下のコードを試みた:

CCC  CC36  A 
5N   N577  A 
5N   N577  A 
5N   N577  A 
2T   225  A 
PE   020  A 
+0

かなり単純な問題のための非常に複雑な解決策:( –

+0

@ M.Ali OPは残っているだけです...まあ、はい、複雑です。 – gofr1