我有一個字段在table.Suppose它的值是2009/1234.我想在'/'之前獲得數字我想在存儲過程中做這個sql.Can任何人都可以幫助?獲取數字後/存儲過程
回答
SUBSTRING(myvalue的,CHARINDEX( '/',myvalue的)+ 1,8000)
假設你可以保證斜線和數字會存在:
SELECT SUBSTRING(myfield, CHARINDEX('/', myfield)+1, 1000) FROM mytable;
如何讓之前「/」數字? – user42348 2009-08-27 06:58:44
的正確方式要做到這一點(在我看來,當然,因爲「正確」是一個主觀術語)將是修改模式,使這些值分開。
換句話說,2009年和1234年將在不同的列。
在速度和可伸縮性方面,在選擇語句中使用每行函數幾乎總是一個壞主意。這是因爲DBMS必須在上執行計算,每提取一行單行,每提取一次時間。
如果你需要他們保持作爲一個單一的專欄中,我已經在過去使用的一個技巧是使用插入/更新觸發器有兩個額外的列接收部分,所以你會:
SomeFields | Data | PostSlash
-----------------+-----------+----------
blah, blah, blah | 2009/1234 | 1234
是的,我知道這不是理想的3NF,但如果你做得對,那麼出於性能原因打破它是完全可以接受的。觸發器將保證列始終匹配,並且您會發現查詢以最少的觸發和數據重複開銷運行得更快。
但是最好在創建或更新行時進行一次拆分,而不是每次讀取它時都進行拆分。這是因爲數據庫通常比他們寫的更多。觸發費用在所有選擇上攤銷。請記住,如果您的表格較小或(出於一些奇怪的原因)書寫比讀取更頻繁,那麼使用每行功能可能會更好。
很高興看到看起來超出問題的人。是的,可以直接回答這個問題,但有時候,更多地考慮這個問題會揭示出潛在的合適的解決方案。 – belugabob 2009-08-27 07:00:11
爲了斜線前得到的數字,假設斜線總是存在:
SELECT LEFT(columnname, CHARINDEX('/', columnname, 1) - 1) FROM aTable
- 1. 獲取存儲過程的參數
- 2. 從存儲過程中獲取參數
- 3. 獲取存儲過程的參數
- 4. 獲取mysql其他存儲過程到新的存儲過程數據
- 5. 在另一個存儲過程中獲取存儲過程的參數。
- 6. 從外部存儲過程獲取參數值 - 嵌套存儲過程
- 7. 獲取存儲過程的結果Laravel
- 8. 獲取存儲過程的代碼
- 9. 從存儲過程中獲取在Oracle
- 10. 從存儲過程獲取返回值
- 11. 獲取來自Oracle存儲過程
- 12. 獲取存儲過程的返回值
- 13. 獲取存儲過程的列名
- 14. MS SQL存儲過程來獲取值
- 15. 無法獲取存儲過程
- 16. 從存儲過程中獲取價值
- 17. 從存儲過程獲取返回值
- 18. 如何獲取IQueryable的存儲過程?
- 19. 從存儲過程獲取SQL
- 20. 從存儲過程獲取返回值
- 21. 從存儲過程中獲取結果
- 22. 獲取存儲過程信息
- 23. 獲取存儲過程多個結果
- 24. 從.Net獲取存儲過程信息
- 25. 獲取和錯誤是存儲過程
- 26. 存儲過程:獲取月份
- 27. 從SQL Server獲取最後一個表存儲過程
- 28. 如何通過wcf中的存儲過程獲取數據?
- 29. 通過C#或SQL獲取存儲過程參數?
- 30. NHibernate從存儲過程通過ref_cursor獲取數據
標題說的是一套,而queston另一... – Guffa 2009-08-27 07:30:24