基本的T-SQL将变量传递给LEFT

时间:2018-09-21 01:31:43

标签: sql-server

这看起来真的很基础,但是为什么这不起作用?

DECLARE @Test1 INT
DECLARE @Test2 NVARCHAR
SELECT @Test1 = CHARINDEX('_', 'x1Left_r2Right')-1
SELECT @Test2 = LEFT('x1Left_r2Right', @Test1)
PRINT @Test1
PRINT @Test2

如果按照我的逻辑,结果应为'x1Left',但是,似乎@Test在第二个选择中始终评估为1,即使它包含6。

这是当前输出:

6
x

我正在使用sql-server 2014。

1 个答案:

答案 0 :(得分:1)

您将@Test2声明为NVARCHAR,但没有大小。默认情况下,大小为1。这就是为什么只x的第一个字符

更改为NVARCHAR(100),就可以了