SQL Server反转CONTAINS

时间:2014-01-20 14:10:05

标签: sql sql-server sql-server-2008

我不确定这是否可行,我完全不确定如何正确地提出这个问题,但我会试一试。

我正在使用SQL Server 2008 R2,并且有一个包含值“1000”的数据库列。 现在我将从界面中获得以下值:“100023”。

现在我想编写一个SQL Server查询,我可以使用100023查找包含1000的行。因此,我不想将CONTAINS与1000一起使用找到100023,但反过来。我想这样做,因为接口也返回100024,100025,100025等值,但我总是只想拥有包含1000的行。我遗憾地无法从界面更改返回值并切换最后两个数字关闭。

我不确定,如果这在逻辑上有道理,但也许有人可以帮助我。

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以使用LIKE

DECLARE @param varchar(10)
SET @param = '100023'

SELECT Value 
FROM dbo.TableName 
WHERE @param LIKE '%' + Value + '%'

Demo

答案 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

如果没有,请尝试重新编写您的文字,以便社区更好地了解您的要求。 :)