我不确定这是否可行,我完全不确定如何正确地提出这个问题,但我会试一试。
我正在使用SQL Server 2008 R2,并且有一个包含值“1000”的数据库列。 现在我将从界面中获得以下值:“100023”。
现在我想编写一个SQL Server查询,我可以使用100023
查找包含1000的行。因此,我不想将CONTAINS
与1000一起使用找到100023,但反过来。我想这样做,因为接口也返回100024,100025,100025等值,但我总是只想拥有包含1000的行。我遗憾地无法从界面更改返回值并切换最后两个数字关闭。
我不确定,如果这在逻辑上有道理,但也许有人可以帮助我。
提前致谢!
答案 0 :(得分:2)
您可以使用LIKE
:
DECLARE @param varchar(10)
SET @param = '100023'
SELECT Value
FROM dbo.TableName
WHERE @param LIKE '%' + Value + '%'
答案 1 :(得分:1)
如果我已正确理解您的要求。以下查询将获取您正在查找的行而不实际更改输入参数(好吧,不会对输入参数进行任何更改。)如果您能够在查询之前对之前的操作进行更改,您将获得完全受益于一个sargable平等条款,因此是一个很好的索引寻求。
DECLARE @param varchar(10)
SET @param = '100023'
declare @testTable table(num int, described_as varchar(100))
insert into @testTable values
( 1000, 'The number one thousand'),
( 2000, 'The number two thousand')
SELECT *
FROM @testTable
WHERE num = FLOOR( ROUND(@param, -2)) / 100
如果没有,请尝试重新编写您的文字,以便社区更好地了解您的要求。 :)