Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server反向包含_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

SQL Server反向包含

SQL Server反向包含,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我不确定这是否可能,我完全不确定如何正确地问这个问题,但我会尝试一下 我使用的是SQLServer2008R2,有一个数据库列包含值“1000”。 现在我将从一个接口获得以下值:“100023” 现在我想编写一个SQL Server查询,在这里我可以使用100023并找到包含1000的行。因此,我不想使用CONTAINS和1000来查找100023,而是相反。我想这样做,因为接口也会返回像100024、100025、100025这样的值,但我总是想得到包含1000的行。遗憾的是,我无法更改接口的

我不确定这是否可能,我完全不确定如何正确地问这个问题,但我会尝试一下

我使用的是SQLServer2008R2,有一个数据库列包含值“1000”。 现在我将从一个接口获得以下值:“100023”

现在我想编写一个SQL Server查询,在这里我可以使用
100023
并找到包含1000的行。因此,我不想使用
CONTAINS
和1000来查找100023,而是相反。我想这样做,因为接口也会返回像100024、100025、100025这样的值,但我总是想得到包含1000的行。遗憾的是,我无法更改接口的返回值,也无法将最后两位数字切掉

我不确定,这在逻辑上是否合理,但也许有人能帮我


提前谢谢

您可以像使用
一样使用

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

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

如果我正确理解了您的要求。下面的查询将获得您正在查找的行,而不实际更改输入参数(当然,也不保留对输入参数的任何更改)。如果您能够在查询之前的操作中进行更改,那么您将获得sargable equality子句的全部好处,从而获得一个很好的索引查找

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

如果没有,请尝试重新表述您的文本,以便社区能够更好地理解您的要求。:)

所以参数是
100023
(varchar),您想查找所有作为子字符串的记录吗?您如何调用查询?如果你可以执行任意的查询,为什么不能把这两个字符删掉呢?我感觉到了矛盾。值100024和100025包含1000,但您说您不需要它们。因为值以
1000开头
不会像值+'%'
那样更准确吗?@EvertonAgner:但他想要的是的“oposite”,并且还提到:“包含1000的行”不是以1000开头的行。据我所知,这个问题,他想查询
100023
100024
100025
等,并且总是找到
1000
@EvertonAgner:如果你看一下,你会发现他总是找到1000。好的,但是如果你查询
999100023
,它就是在查找
1000
。不管怎么说,警长必须检查这是否是他想要的。。。这句话让我感到困扰:
很遗憾,我无法更改接口的返回值,也无法将最后两位数字切掉