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



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

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上。

你声明@Test2NVARCHAR没有大小。默认情况下,大小为 1。这就是为什么你只得到第一个字符x

更改为NVARCHAR(100)就可以

最新更新