我正在使用函數sp_spaceused來獲取數據庫中所有表的詳細信息。 index_size列是VARCHAR返回完成與'KB'的結尾,但我想以MB顯示。我只需要知道如何去除KB,剩下的就可以完成了! :D刪除T-SQL中的數字字符
更新:我不覺得這是建議的另一個問題的重複,因爲我正在尋找一個僅在此線程中給出的SQL解決方案。
我正在使用函數sp_spaceused來獲取數據庫中所有表的詳細信息。 index_size列是VARCHAR返回完成與'KB'的結尾,但我想以MB顯示。我只需要知道如何去除KB,剩下的就可以完成了! :D刪除T-SQL中的數字字符
更新:我不覺得這是建議的另一個問題的重複,因爲我正在尋找一個僅在此線程中給出的SQL解決方案。
REPLACE(column,'KB','')。無需LEN和其他的東西
2005年SQL,這會給你的「保留」值:
SELECT
SUM(au.total_pages)/128.0 AS UsedMB
FROM
sys.allocation_units au
一些更多的調查應該讓你閱讀指數VS數據空間出來的目錄下載觀點太
我的第一個想法是隻存儲在一個變量,只是使用子字符串刪除最後的字符。
-- Setup
DECLARE @data VARCHAR(50)
SET @data = '159736 KB'
-- Computation
SET @data = SUBSTRING(@data, 1, LEN(@data)-2)
-- Conversion
SELECT CAST(@data AS INTEGER)
更通用的解決方案:
-- 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
可能重複:http://stackoverflow.com/questions/106206/fastest-way-to-remove-non-numeric-characters-from-a-varchar-in -SQL-服務器 – 2015-05-05 14:51:18