分享內容(
執行結果:

從上面的執行結果,可以看到原本轉換前文字:(02)2311-3731,在經過轉換之後,就變成了:0223113731。
為了方便解說,所以程式碼都是寫死的,然而,在實務應用上,是會把上面的程式碼寫成使用者自訂函數,方便隨時呼叫、增加執行速度(因為使用者自訂函數不需要重新剖析和最佳化)。至於怎麼改,可以參考上一篇分享的文章:如何使用 T-SQL 取到小數點後第 n 位。
如果說要找出非數字的值,相信大家會舉一反三,知道要怎麼做吧!
7人
直接看程式碼:
-- 宣告變數 DECLARE @position int, @strInput nvarchar(100), @intASCII int, @strTemp nvarchar(1), @strOuput nvarchar(100) -- 初始化變數 SET @position = 1 SET @strInput = '(02)2311-3731' SET @strTemp = '' SET @strOuput = '' -- 當目前的字元位置小於或等於輸入的字串長度時 WHILE @position <= DATALENGTH(@strInput) BEGIN -- 取得某個位置的字元 SET @strtemp = SUBSTRING(@strInput, @position, 1) -- 取得單一字元的 ASCII 之值 SET @intASCII = ASCII(@strTemp) -- 判斷是否為數字:介於 48 ~ 57 之間 IF (@intASCII >=48 and @intASCII <= 57) BEGIN -- 將目前的數字附加到先前的數字之後 SET @strOuput = @strOuput + @strTemp END -- 將目前的字元位置再加上 1,也就是往後移動 1 個字元 SET @position = @position + 1 END PRINT N'轉換前的文字:' + @strInput PRINT N'轉換後的文字:' + @strOuput
執行結果:
從上面的執行結果,可以看到原本轉換前文字:(02)2311-3731,在經過轉換之後,就變成了:0223113731。
為了方便解說,所以程式碼都是寫死的,然而,在實務應用上,是會把上面的程式碼寫成使用者自訂函數,方便隨時呼叫、增加執行速度(因為使用者自訂函數不需要重新剖析和最佳化)。至於怎麼改,可以參考上一篇分享的文章:如何使用 T-SQL 取到小數點後第 n 位。
如果說要找出非數字的值,相信大家會舉一反三,知道要怎麼做吧!
參考資料:Microsoft SQL Server 2005 線上叢書、實務經驗
▼ ADVERTISEMENT ▼
-
‧
-
‧
-
‧
相關問答
- 鐵人賽的疑問?
- 最後一天 -- 鐵人賽對我的意義!!!
- 第一屆iT邦幫忙鐵人賽早鳥獎與鐵人鍊成獎得獎名單
- 小財神來報告一下鐵人賽豐富的獎品與參賽報法囉
- 鐵人賽4
- MS SQL 2008
- 對於這次鐵人賽你認為哪些文章該被檢舉?
- 如何將 MS SQL 2000 上的資料完整的轉移或匯出到 MS SQL 2008?
- 鐵人賽發表的文章,可以同時發佈在自己個人部落格上嗎?
- 無法刪除SQL 2000的使用者
- 鐵人賽
- 將SQL 2000資料庫回存到SQL 2005出現錯訊
- SQL Server 2008的趣味影片
- SQL 指令
- 如何在 T-SQL 中宣告變數
- SQL Server備份發生錯誤
- 如何將SQL 2005 Express版本升級到標準版或企業版
- 請問有沒有類似SQL Naviagtor,TOAD的軟體?
- 鐵人賽5
- 鐵人賽6









