SQL命令修剪输出

时间:2013-09-18 19:02:06

标签: sql-server

我需要撕掉我正在返回的数字的数字。我把它们放在像X0006,X0130和X1030这样的列表中。我需要拉出X和0并返回6,130,1030。我试过像这样的RTRIM。任何人对我需要做什么都有任何想法?我确定我很遗憾。

由于

3 个答案:

答案 0 :(得分:1)

使用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

以下示例输出。

enter image description here

答案 1 :(得分:1)

这是一个您可以创建的功能,它可以完全满足您的要求以及任何未来的数字需求。

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')

答案 2 :(得分:0)

我使用replace来摆脱X并且只是复制/粘贴到excel中以获得前面的零