iThome online | iThome Blog | iThome周刊訂閱

載入中...

alexc

IT邦好手
9級

如何取得文數字的資料中,所有的數字的值
標籤:鐵人賽 sql

本次分享的主題是關於如何使用 T-SQL 來處理數字,以便取得文數字的資料中,所有的數字的值。



收到書籤:發佈到twitter      
分享時間:2008-09-28 10:27:21

▼ ADVERTISEMENT ▼

分享內容(
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 線上叢書、實務經驗

如何取得文數字的資料中,所有的數字的值

目前沒有資料

回應

請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數



 

檢舉違規

違規事項:

*補充檢舉理由(可省略),字數不可超過100字

推薦

推薦理由:


*給回答者的鼓勵(可不填),字數不可超過100字

▼ ADVERTISEMENT ▼

熱門標籤

 cisco   crystal   exchange   it   java   javascript   linux   m-power   mail   microsoft   msnlib   msnp15   msnsdk   msn機器人   mysql   nas   oracle   outlook   pmi   pmp   raid   report   sap   server   smartquery   sql   vista   windows   xp   倍力   倍力資訊   免費軟體   國際專案管理師   報表   專案管理   微軟   有話大聲說   活動   省錢   網路   網路儲存   網路管理   網頁安全   網頁設計   資安   資料庫   資訊安全   防毒軟體   2003   2008