转换或将vchar转换为int而不使用字符' - '或 -

时间:2016-12-15 18:33:19

标签: sql sql-server-2008 tsql casting

我需要在SQL表中选择此(00-00066)并在转换后得到(0000066)

就像>>>>>

一样
declare @v1 varchar(21) = '00-00066', --- I need ignore this character '-'
    @v2 varchar(21) = '000    -     66   ',
    @v3 varchar(21) = '00-66' + char(13) + char(10),
    @v4 varchar(21) = char(9) + '66000-00'

select cast(@ v1 as int) - 错误 select cast(@ v2 as int) - 错误 select cast(@ v3 as int) - 错误 select cast(@ v4 as int) - 错误

1 个答案:

答案 0 :(得分:1)

DigitsOnlyEE专为此问题而开发,并且比我见过的任何函数都快。您只需要从提供的链接中获取代码即可创建它。

以下是一个如何运作的简单示例:

SELECT DigitsOnly FROM dbo.DigitsOnlyEE('000    -     66   ');

结果:

00066

对表使用:

-- sample data
DECLARE @table TABLE (oldString varchar(100));
INSERT @table VALUES ('00-00066'),('000    -     66   '),
('00-66' + char(13) + char(10)), (char(9) + '66000-00');

-- solution
SELECT oldString, DigitsOnly
FROM @table
CROSS APPLY dbo.DigitsOnlyEE(oldString);

结果:

enter image description here