如何引用SQL

时间:2017-06-16 17:56:22

标签: sql sql-server

我只是在特定列值的最后一位不为零的情况下尝试从表中选择行。

SELECT *  
FROM #table  
WHERE RIGHT(column, 1) BETWEEN 1 AND 9 

未返回正确的值。我认为这是因为数据以科学记数法存储为字符串。请帮忙!
更新:修复它!结果证明是数据类型的问题

4 个答案:

答案 0 :(得分:1)

您可以使用外卡操作员,即LIKE

Select * from Your Table where COlumn Name Like '%0';

有关详细信息,请访问指定链接

https://www.w3schools.com/sql/sql_wildcards.asp

答案 1 :(得分:1)

如果列是os.path.dirname(os.path.realpath(__file__))

,您可以尝试使用modulo运算符
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'