Sql server 如何在sql server中连接字符串
我试图连接字符串,但它似乎不起作用。谁能告诉我下面的代码有什么问题吗Sql server 如何在sql server中连接字符串,sql-server,tsql,Sql Server,Tsql,我试图连接字符串,但它似乎不起作用。谁能告诉我下面的代码有什么问题吗 declare @x varchar = 'a'; SET @x += 's' SET @x = @x + 'z' SET @x = concat('x','y') SELECT @x; 上述方法都不起作用。我得到的输出是“x”。下面的代码可以工作,请记住,您需要声明足够长的字符串来包含结果 declare @a varchar(100) declare @b varchar(100) set @a = 'This
declare @x varchar = 'a';
SET @x += 's'
SET @x = @x + 'z'
SET @x = concat('x','y')
SELECT @x;
上述方法都不起作用。我得到的输出是“x”。下面的代码可以工作,请记住,您需要声明足够长的字符串来包含结果
declare @a varchar(100)
declare @b varchar(100)
set @a = 'This should ';
set @b = 'work';
select @a + @b
如果您有以下较短的字符串:
declare @a varchar(4)
declare @b varchar(4)
set @a = 'This should ';
set @b = 'work';
select @a + @b
您将得到以下结果:
'Thiswork'
您需要用长度声明您的VARCHAR,尝试将其更改为VARCHAR(20),然后看看会发生什么
不使用长度声明VARCHAR将导致长度为1。在声明
VARCHAR()
时需要长度。否则,它只有一个字符长:
declare @x varchar(255) = 'a';
一旦变量足够大,可以存储值,剩下的代码就可以工作了。根据Aaron Bertrand的文章: …您不应该在没有长度的情况下声明
VARCHAR
问题是,如果不定义长度,SQL Server将分配
一个是给你的,它可能没有你想象的那么宽。在某些方面
在各种情况下,它将是1(是的,这是第一位,不是打字错误),并且
在其他国家,这将是30
这方面的问题也很清楚:
varchar[(n|max)]在数据定义或变量声明中未指定n时 语句,默认长度为1。当使用时未指定n时 在CAST和CONVERT函数中,默认长度为30 这很好:
declare @x varchar(10) = 'a';
SET @x += 's'
SET @x = @x + 'z'
SET @x = concat('x','y')
SELECT @x;
declare @x varchar(10) = 'a';
SET @x += 's'
SET @x = @x + 'z'
SET @x = concat('x','y')
SELECT @x;
您需要告诉sql您的varchar的长度。在大多数情况下,sql将varchar视为varchar(1)