2009-03-05 47 views
2

我正在使用函數sp_spaceused來獲取數據庫中所有表的詳細信息。 index_size列是VARCHAR返回完成與'KB'的結尾,但我想以MB顯示。我只需要知道如何去除KB,剩下的就可以完成了! :D刪除T-SQL中的數字字符

更新:我不覺得這是建議的另一個問題的重複,因爲我正在尋找一個僅在此線程中給出的SQL解決方案。

+0

可能重複:http://stackoverflow.com/questions/106206/fastest-way-to-remove-non-numeric-characters-from-a-varchar-in -SQL-服務器 – 2015-05-05 14:51:18

回答

1

REPLACE(column,'KB','')。無需LEN和其他的東西

2005年SQL,這會給你的「保留」值:

SELECT 
    SUM(au.total_pages)/128.0 AS UsedMB 
FROM 
    sys.allocation_units au 

一些更多的調查應該讓你閱讀指數VS數據空間出來的目錄下載觀點太

1

我的第一個想法是隻存儲在一個變量,只是使用子字符串刪除最後的字符。

-- Setup 
DECLARE @data VARCHAR(50) 
SET @data = '159736 KB' 

-- Computation 
SET @data = SUBSTRING(@data, 1, LEN(@data)-2) 

-- Conversion 
SELECT CAST(@data AS INTEGER) 
0

更通用的解決方案:

-- Test data 
DECLARE @StrIn VARCHAR(100), @StrOut VARCHAR(100), @I INT, @Len INT 
    SELECT @StrIn = '123m43 5m409', @StrOut = '', @I = 0, @Len = Len(@StrIn) 

-- Answer 
WHILE (@I < @Len) BEGIN 
    SELECT @I = @I + 1, 
    @StrOut = @StrOut + 
     CASE 
     WHEN (CAST(ASCII(SUBSTRING(@StrIn, @I, 1)) AS INT) BETWEEN 47 AND 58) 
     THEN SUBSTRING(@StrIn, @I, 1) ELSE '' 
     END 
END 

SELECT @StrIn, @StrOut