right() 函数在不使用 rtrim 的情况下不起作用. 只有这样工作:right(rtrim(column_nam



我不明白为什么没有rtrimright()函数将无法工作。
我什至使用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最合适。

最新更新