2013-04-01 31 views
0

假設我在表格中有以下記錄。從特定位置選擇一個字符串 - T-SQl

4 - Mar 1 thru Apr 11 
13 - Dec 01 thru Dec 31 

我想選擇的路線,使輸出會是這樣,

Mar 1 thru Apr 11 
Dec 01 thru Dec 31 

我怎麼能這樣做?

謝謝

+1

數據是否實際上像這樣構成而不是兩個'DATETIME'字段S' – Oded

+1

只需使用'charindex'找到連字符的索引,然後使用'substring'來提取剩餘部分 – LittleBobbyTables

+0

是的,有一列包含上述格式的值。我希望在開始月份名稱前刪除所有內容並獲取輸出。 – 007

回答

1

我可以使用:

CHARINDEX (expressionToFind ,expressionToSearch [ , start_location ])

請參閱文檔:http://msdn.microsoft.com/en-us/library/ms186323.aspx

所以,這將是:

SELECT SUBSTRING([*FieldName*], CHARINDEX('-', [*FieldName*])+2, 252) FROM [*Table*] 

252是多少C字符,這是nvarchar字段的默認長度。如果需要增加或減少此數量。

我把+2去掉-(破折號和空格)。

+0

這是有效的!非常感謝。 – 007

0
SELECT REPLACE((SUBSTRING('4 - Mar 1 thru Apr 11', CHARINDEX(' - ', '4 - Mar 1 thru Apr 11'), LEN('4 - Mar 1 thru Apr 11'))),' - ','') 

這也適用,

我現在就看看你的選擇。

謝謝你的幫助。

1

你有很多選擇,我會用選擇SUBSTRLEN條款,(看到這個頁面:http://oreilly.com/catalog/sqlnut/chapter/ch04.html

數據:
4 - 三月1日至4月11日
選擇SUBSTR(你的字段,4,TRIM(LEN(你的字段)-4))FROM your-table;

OUTPUT:
三月一日至4月11日
12月1日至12月31日

NOTES
- SUBSTR:參數
的收益部分 - LEN:參數
的回報lenght - TRIM:返回長度不含空格

相關問題