无法筛选数据,因为SQL Server 2008中的数据中有空格

无法筛选数据,因为SQL Server 2008中的数据中有空格,sql,sql-server-2008,Sql,Sql Server 2008,此记录存在于表中,但当我要使用此id进行筛选时,不会得到任何记录,因为在此id中有一些空间比我使用的空间大ltrim,rtrim之后,我也不会得到任何记录,因此请告诉我必须做什么尝试调整筛选条件: select DISTINCT rtrim(ITEMID) FROM [MIS-028].[AX-DW-QTY].[dbo].ITEMQTYHISTORY_2 where ITEMID = 'S991071215' 甚至: select DISTINCT rtrim(ITEMID) F

此记录存在于表中,但当我要使用此id进行筛选时,不会得到任何记录,因为在此id中有一些空间比我使用的空间大ltrim,rtrim之后,我也不会得到任何记录,因此请告诉我必须做什么

尝试调整筛选条件:

select DISTINCT rtrim(ITEMID)   
FROM [MIS-028].[AX-DW-QTY].[dbo].ITEMQTYHISTORY_2   
where ITEMID = 'S991071215'
甚至:

select DISTINCT rtrim(ITEMID) 
FROM [MIS-028].[AX-DW-QTY].[dbo].ITEMQTYHISTORY_2 
where RTrim(ITEMID) = 'S991071215'

注意:这样做会使过滤器不可分配,并且如果存在索引,则无法使用索引。

问题是您正在应用RTRIM的地方

select DISTINCT rtrim(ITEMID) 
FROM [MIS-028].[AX-DW-QTY].[dbo].ITEMQTYHISTORY_2 
where LTrim(RTrim(ITEMID)) = 'S991071215'
上面的查询表示“获取所有项目数量历史记录,其中ItemID='S991071215',然后删除ItemID右侧的所有空格,然后仅获取不同的空格”

SELECT DISTINCT RTRIM(ItemID)   
FROM   [MIS-028].[AX-DW-QTY].[dbo].ITEMQTYHISTORY_2   
WHERE  ItemID = 'S991071215'
上面的查询表示“从item Quantity历史记录中获取所有ItemID,然后删除ItemID右侧的所有空格,然后过滤结果以仅获取ItemID为'S991071215'的记录,然后仅获取不同的记录”

SELECT DISTINCT RTRIM(ItemID)   
FROM   [MIS-028].[AX-DW-QTY].[dbo].ITEMQTYHISTORY_2   
WHERE  ItemID = 'S991071215'
基本上,第一行中的函数是在检索结果后应用的,而WHERE子句中的函数是在获取结果时应用的。此外,正如米奇所建议的,LTRIM(RTRIM(ItemID))将删除右侧的所有空格,然后使用该结果删除左侧的所有空格