我不明白为什么没有rtrim
right()
函数将无法工作。
我什至使用update
来获取整个列的rtrim
,但如果不在其中使用Rtrim()
right()
仍然无法工作。
我在SQL Server 2008中做了一个表。该表只有一列name char(30)
。
我尝试使用right()
函数从右侧获取子字符串计数。
结果仅显示空白列。
当我尝试使用left()
函数从左侧获取子字符串时,它按预期工作right()
但该函数在不使用RTRIM
的情况下不起作用。
这将起作用
select right(rtrim(name),5) from emp
这行不通
select right(name,5) from emp
我希望在名称列中获取最后 3 个字符的子字符串。
我的结果显示一个空列
char(5)
是固定长度的类型,因此在值小于指定的最大大小的情况下,该值包括尾随空格。使用RIGHT
时,将返回尾随空格:
DECLARE @name char(30) = 'abcdef';
SELECT RIGHT(@name,5); --returns 5 spaces
使用TRIM
,删除尾随空格,返回的数据类型varchar(5)
:
SELECT RIGHT(RTRIM(@name),5); --returns 'bcdef'
您可能应该对 Name 列使用varchar(30)
而不是char(30)
,因为数据会有所不同,长度会有所不同,并且您可能不希望在数据库中存储不需要的空间。 当实际值大小相同时,char
最合适。