我想數據得到的左邊 - 我想下面提取文本的左側「 - 」
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
我想數據得到的左邊 - 我想下面提取文本的左側「 - 」
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
SELECT
LEFT(LocationName, ISNULL(NULLIF(CHARINDEX('-',LocationName),0), LEN(LocationName)+1)-1)
,EncounterNumber
from #TubeRateQty
消息537,級別16,狀態2,行124 傳遞給LEFT或SUBSTRING函數的長度參數無效。 – user3666224
@ user3666224現在試一下,如果沒有'-'是字符串,那就錯誤了,我已經添加了一些檢查來處理這種情況。 –
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
一個相當簡單的問題過於複雜的解決方案:( –
@ M.Ali OP只需要離開......好吧,是的,很複雜。 – gofr1
也許選擇 LEFT(LocationName,CHARINDEX(' - ',LocationName)-1), EncounterNumber from #TubeRateQty – OldBoyCoder
消息537,級別16,狀態2,行124 傳遞給LEFT或SUBSTRING函數的長度參數無效。 – user3666224
它可能應該選擇LEFT(LocationName,CHARINDEX(' - ',LocationName)),#TubeRateQt中的EncounterNumber。但我目前無法使用sqlfiddle來測試任何內容。你確定所有的行都有' - '嗎? – OldBoyCoder