我想我有一个简单的问题。我想在varchar变量中运行一对chars并检查一下。我试着用这个简单的代码(如下图所示) 但是我打印了两次。为什么第二个LEFT不起作用?
declare
@name nvarchar(50),
@temp nvarchar(50)
set @name = 'house'
set @temp = @name
set @temp = Left(@temp,2)
print @temp
set @temp = Left(@temp,2)
print @temp
答案 0 :(得分:1)
返回具有指定编号的字符串的左侧部分 人物。
因此Left(@temp,2)
将返回“ho”
Left("ho",2)
也将返回“ho”。
因此,你总会得到“ho”。
如果您希望PRINT
前2个字母,然后删除它们,您可以这样做:
PRINT Left(@temp,2)
SET @temp = SUBSTRING(@temp, 2, LEN(@temp)-2)
如果您要再次致电Left(@temp,2)
,您将获得“我们”
答案 1 :(得分:0)
这完全按照原样运作:
declare
@name nvarchar(50),
@temp nvarchar(50)
set @name = 'house'
set @temp = @name
set @temp = Left(@temp,2) --here @temp has ho
print @temp
set @temp = Left(@temp,2) -- you are trying again to get
--left ('ho',2)
--this will again return you ho
print @temp
首先set @temp = Left(@temp,2)
,您设置临时值'ho'
。在第二组语句中,您再次尝试从字符串'ho'
左侧访问2个字符,这将再次为您提供相同的内容。
答案 2 :(得分:0)
SQL Server中的LEFT()函数只会打印从字符串左侧指定的字符数。对于您的要求,您需要使用SUBSTRING()函数和WHILE语句。下面给出一个例子:
declare @str varchar(5)='house'
declare @i int = 1
while @i<len(@str)
begin
print SUBSTRING(@str,@i,2)
set @i=@i+1
end
输出: 浩 OU 我们 SE ë