从Varchar列中选择Only Numbers

时间:2014-01-02 16:32:27

标签: sql sql-server

在SQL Server 2008 R2中,我在varchar(12)列中有一些数据,它看起来像这样:

Data:
%%1234
%1765
34566
123
%SDRMH
HJG434

我想从拥有它的所有行中删除'%',并且只选择那些是数字的行。我已经尝试过使用ISNUMERIC()函数了,但看起来就像在行中留下了%。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您可以使用REPLACE功能去除所有%实例

SELECT REPLACE(column_name,'%','');
GO

答案 1 :(得分:1)

您可以使用REPLACE和ISNUMERIC的组合来实现您想要的结果集:

SELECT REPLACE(columnName,'%','') FROM tableName
WHERE ISNUMERIC(REPLACE(columnName,'%','')) = 1

答案 2 :(得分:1)

您可以执行类似

的操作
SELECT REPLACE(column,'%','') WHERE ISNUMERIC(REPLACE(column,'%','')) = 1

答案 3 :(得分:1)

这个函数使用起来很昂贵,但它可以帮助你创建/填充一个正确输入为int的新列(例如):

create function [dbo].[is_int]
    (   @value as varchar(max)  )
returns int
as
begin
declare @return int
set @return = 5
while len(@value) > 0
begin
    if left(@value,1) in('1','2','3','4','5','6','7','8','9','0')
        begin
            set @value = right(@value, len(@value)-1)
            set @return = 1
        end
    else
        begin
            set @return = 0
            set @value = ''
        end
end
return @return
end

或者您可以修改它以返回整数本身,而不是真/假(1/0)。