SQL显示无效数据

时间:2016-08-11 10:28:45

标签: sql-server

t0212_1   t0212_2
884999999 GCP-9     Company A
8849999   GCP-7     Company B

@val = 884999999 

这是我的疑问:

Select * Company
WHERE t0212_1= (LEFT(CONVERT(BIGINT,@val),convert(int,substring('GCP-9',5,2)))) OR
      t0212_1= LEFT(CONVERT(BIGINT,@val),convert(int,substring('GCP-7',5,2))) 

当我搜索8849999时,显示8849999(这是正确的)。

当我搜索884999999时,显示884999999(这是正确的)和8849999显示(错误)。

怎么做,请帮忙

谢谢, 如果您不理解我的简短解释,您可以向我核实。

1 个答案:

答案 0 :(得分:0)

您的过滤输入为7或9个字符(DECLARE @val INT = 884999999) 应与列(t0212_1)值匹配。

根据您的过滤器,您将获得两条记录,因为两条记录与您的过滤匹配。

您可以使用此SQL

SELECT *
FROM @Company
WHERE t0212_1 = (LEFT(CONVERT(BIGINT, @val), convert(INT, substring(t0212_2, 5, 2))))