我在 Transact-SQL 中有一个临时表,有 2 列。我将数据插入到表格中,值的右侧有空格,如下所示
insert into #temp ([ACCESS],[USER_ID]) values ('ABC','MGD\info ')
使用 RTRIM 函数的验证查询没有给出这些右侧间隔值的结果。
select count(*) from #temp where RTRIM([USER_ID])<>[USER_ID]
“上述查询的预期结果应该是 1 行。而查询给出 0 条记录。
我尝试通过直接提及值中的空格来显示相同的内容,如下面的查询所示,它显示 1 行:
select [ACCESS],[USER_ID] from #temp where [USER_ID]='MGD\info '
我也尝试了 LTRIM 的类似步骤,它工作正常,但同样不适用于 RTRIM”
字符串比较忽略尾随空格。您可以使用
DATALENGTH()
来比较修剪前后的真实存储长度(以字节为单位)。 (请注意,无法使用 LEN()
,因为它也会忽略尾随空格。)
select count(*)
from #temp
where DATALENGTH(RTRIM(USER_ID)) <> DATALENGTH(USER_ID)
参见这个数据库<>小提琴。