这似乎是我不知道的琐碎的语法问题。我想在基于允许的列限制来修剪一些数据的行上定义一个函数。

这是一些有效的示例代码。

DECLARE @value nvarchar(max) = ' Test string abc '
DECLARE @length integer = 10
DECLARE @trimValue nvarchar(max) = @value
SELECT @trimValue = LTRIM(RTRIM(CAST(@value AS nvarchar(10))))
SELECT @trimValue


返回'Test str'

现在,我想动态传递该投射长度。我怎样才能做到这一点?

 SELECT @trimValue = LTRIM(RTRIM(CAST(@value AS nvarchar(@length))))

最佳答案

您可以在这种情况下使用LEFT,因为它是一个字符串,否则您需要动态进行操作

DECLARE @value nvarchar(max) = ' Test string abc '
DECLARE @length integer = 10

DECLARE @trimValue nvarchar(max) = @value
SELECT @trimValue = LEFT(LTRIM(RTRIM(@value)),@length)
SELECT @trimValue

关于sql-server-2008 - 如何动态传递CAST的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8916935/

10-10 17:08