SQL中如何去掉一个变量的空,并且把结果用在一个存储过程的参数中,如上

SQL中怎么去掉一个变量的空,并且把结果用在一个存储过程的参数中,如下:
比如我有一个存储过程:sp_addlogin(系统内置的),现在我要调用它
declare @N='aaa                     '
exec sp_addlogin @N,@N,'database'
现在我要参数中的@N是'aaa'而不是'aaa                     '


------最佳解决方案--------------------
declare @N='aaa                     '
set @N=ltrim(rtrim(@N))
exec sp_addlogin @N,@N,'database'
------其他解决方案--------------------
加强版:去回车和换行加左空右空的


eclare @N='aaa                     '
set @N=REPLACE(REPLACE(ltrim(rtrim(@N)),char(13),''),char(10),'')
exec sp_addlogin @N,@N,'database'



------其他解决方案--------------------
引用:
比如我有一个存储过程:sp_addlogin(系统内置的),现在我要调用它
declare @N='aaa                     '
exec sp_addlogin @N,@N,'database'
现在我要参数中的@N是'aaa'而不是'aaa                     '

不行吧,还是有空格
------其他解决方案--------------------
declare @N NVARCHAR(20)='aaa                     '
 SELECT  @n=SUBSTRING(@n,1,PATINDEX('% %',@n)-1)
 SELECT LEN(@n)
 --exec sp_addlogin @N,@N,'database'