2016-07-14 25 views
0

我想從左到第二個- sku的第一個字母。但在輸出中,我不想讓第二個-出現。想要從SQL Server列的sku的特定部分

我的輸入表是

Input table

查詢:

SELECT SUBSTRING(SKU, charindex('-',SKU), len(SKU) - charindex('-',SKU)) 
FROM tblname 

我的除外輸出

desired o/p

+0

什麼 「方言」 的SQL是這樣的呢? MS SqlServer?甲骨文? Postgres的? ....字符串操作可能需要一些產品特定的功能或技巧... –

+0

我沒有訪問SQL Server實例,所以我不能提出一個完整的解決方案 - 只有建議。 你可以寫一個_function_爲你做這件事(可能比試圖做所有選擇的部分更有效),或者 - 正如別人所建議的那樣,使用_reverse_來轉換問題:「我需要找到最後一個實例' - '在我的字符串中隔離SKU「更容易處理」我需要找到' - '的第一個實例「,請參閱:http://stackoverflow.com/questions/1024978/find-index-of-last - 使用-t-sql發生錯誤 –

回答

0

嘗試......

SELECT 
    SUBSTRING(SKU,0, CHARINDEX('-',SKU,(charindex('-',SKU)+1))+1) from tablename 

希望這有助於...

+0

它不起作用 – sachit

+0

您應該發佈結果以便我們可以更好地理解問題所在。 –

+0

@sachit更新...是你想要的? – Sankar

0
SELECT REVERSE(RIGHT(REVERSE('Hello-World-1'), 
         LEN('Hello-World-1') - CHARINDEX('-', 
                 REVERSE('Hello-World-1')))) 

如果要包括儀表...

SELECT REVERSE(RIGHT(REVERSE('Hello-World-1'), 1 + 
         LEN('Hello-World-1') - CHARINDEX('-', 
                 REVERSE('Hello-World-1'))))