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显示(错误)。
怎么做,请帮忙
谢谢, 如果您不理解我的简短解释,您可以向我核实。
答案 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))))