删除T-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