在SQL Server 2008 R2中,我在varchar(12)列中有一些数据,它看起来像这样:
Data:
%%1234
%1765
34566
123
%SDRMH
HJG434
我想从拥有它的所有行中删除'%',并且只选择那些是数字的行。我已经尝试过使用ISNUMERIC()函数了,但看起来就像在行中留下了%。
非常感谢任何帮助。
答案 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)。