无法筛选数据,因为SQL Server 2008中的数据中有空格
此记录存在于表中,但当我要使用此id进行筛选时,不会得到任何记录,因为在此id中有一些空间比我使用的空间大ltrim,rtrim之后,我也不会得到任何记录,因此请告诉我必须做什么尝试调整筛选条件:无法筛选数据,因为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
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))将删除右侧的所有空格,然后使用该结果删除左侧的所有空格