我需要撕掉我要返回的号码的数字。我将它们放在 X0006、X0130 和 X1030 之类的列表中。我需要取出 X 和 0 并返回 6,130,1030 。我已经尝试过这样的 RTRIM。有人对我需要做什么有任何想法吗?我确定我错过了一些简单的东西。
谢谢
我需要撕掉我要返回的号码的数字。我将它们放在 X0006、X0130 和 X1030 之类的列表中。我需要取出 X 和 0 并返回 6,130,1030 。我已经尝试过这样的 RTRIM。有人对我需要做什么有任何想法吗?我确定我错过了一些简单的东西。
谢谢
使用 replace 将 X 和 O 转换为空字符串,转换为整数以删除前导零。
下面的示例代码。
-- Simple number table
create table #nums
( my_id int identity(1,1),
my_text varchar(32)
);
-- Simplte test data
insert into #nums (my_text)
values
('X10X30X'),
('O00O30O');
-- Remove characters & convert to int
SELECT CAST (REPLACE(REPLACE(my_text, 'X', ''), 'O', '') AS INT) as my_number
FROM #nums
下面的示例输出。
这是您可以创建的一个函数,它将完全按照您的要求以及任何未来获取数字的需要。
CREATE FUNCTION [dbo].[fn__getDigits]
(
@string VARCHAR(50)
)
RETURNS int
AS
BEGIN
-- declare variables
DECLARE
@digits VARCHAR(50),
@length INT,
@index INT,
@char CHAR(1)
-- initialize variables
SET @digits = ''
SET @length = LEN(@string)
SET @index = 0
-- examine each character
WHILE (@length >= @index)
BEGIN
SET @char = SUBSTRING(@string, @index, 1)
SET @index = @index + 1
-- add to the result if the character is a digit
IF (48 <= ASCII(@char) AND ASCII(@char) <= 57)
BEGIN
SET @digits = @digits + @char
END
END
-- return the result
RETURN cast(@digits as int)
END
GO
select [dbo].[fn__getDigits]('X0006')
select [dbo].[fn__getDigits]('X0130')
select [dbo].[fn__getDigits]('X1030')
我用replace来摆脱X,只是复制/粘贴到excel中以去掉前面的零