我只是在特定列值的最后一位不为零的情况下尝试从表中选择行。
SELECT *
FROM #table
WHERE RIGHT(column, 1) BETWEEN 1 AND 9
未返回正确的值。我认为这是因为数据以科学记数法存储为字符串。请帮忙!
更新:修复它!结果证明是数据类型的问题
答案 0 :(得分:1)
您可以使用外卡操作员,即LIKE
Select * from Your Table where COlumn Name Like '%0';
有关详细信息,请访问指定链接
答案 1 :(得分:1)
如果列是os.path.dirname(os.path.realpath(__file__))
:
int
如果数据包含科学记数法中的数字,则可以使用str()函数:
SELECT *
FROM #table
WHERE column % 10 <> 0
这会将列的值转换为存储在varchar中的数字。如果您的值为SELECT *
FROM #table
WHERE right(str(column),1) <> 0
,则会变为3e2
。如果您的值为300
,则会舍入为1.234e2
。有关处理非整数的信息,请参阅str()。
答案 2 :(得分:0)
你可以试试这个,
SELECT *
FROM #table
WHERE SUBSTRING(REVERSE(column), 1, 1) = '0'
答案 3 :(得分:0)
数据中包含哪些内容? 如果列具有尾随空格,那么您将不会获得行。第二个选择陈述;用rtirm(c1)删除空格。更新了答案以匹配更新的问题。
declare @test table (
c1 varchar(10)
)
insert into @test (c1) values ('row 0');
insert into @test (c1) values ('row 0 ');
insert into @test (c1) values ('row 1');
insert into @test (c1) values ('row 1 ');
insert into @test (c1) values ('row 2');
insert into @test (c1) values ('row 2 ');
select * from @test where right(c1, 1) != '0'
select * from @test where right(rtrim(c1), 1) != '0'