sql - 在 concat text 我得到 NULL
问题描述
我尝试 concat 2 字符串并将其反转,但结果我得到 NULL 而不是 ex 的文本。第一个字符串“a1” 第二个字符串“b2” 结果“21ba”
CREATE function addToString(@val1 varchar(100),@val2 varchar(100))
returns varchar(200)
as
begin
declare @i as int
declare @output as varchar(200)
if len(@val1)!=len(@val2)
set @output='length error: '+cast(len(@val1) as varchar(10))+
'<>'+cast(len(@val2) as varchar(10))
else
select @i=len(@val1)-1
while @i>=0
begin
set @output= concat(@output,substring(@val2,@i,1))
set @output= concat(@output,substring(@val1,@i,1))
set @i=@i-1
end
return @output
end
go
select dbo.[addToString]('a1','b2') as txt
解决方案
你的逻辑是错误的,你没有初始化@output:
CREATE function addToString(@val1 varchar(100),@val2 varchar(100))
returns varchar(200)
as
begin
declare @i as int
-- declare @output as varchar(200) -- initialized to NULL
declare @output as varchar(200) = ''
if len(@val1)!=len(@val2)
set @output='length error: '+cast(len(@val1) as varchar(10))+
'<>'+cast(len(@val2) as varchar(10))
else
-- select @i=len(@val1)-1 -- strips the last char
select @i=len(@val1)
-- while @i>=0
while @i>0
begin
set @output= concat(@output,substring(@val2,@i,1))
set @output= concat(@output,substring(@val1,@i,1))
set @i=@i-1
end
return @output
end
;
推荐阅读
- kubernetes - 通过 kubectl 代理的 Kubernetes 仪表板 - 端口混淆
- node.js - 类型错误:this.model 不是函数
- spring - 使用 StaxEventItemWriter 时无法创建动态文件名
- c# - Web.config:连接字符串内的提供程序连接字符串中密码的转义引号不起作用
- python - 创建一个 AI 聊天机器人,无需学习如何回答用户提出的每个问题即可学习如何聊天
- sas - SAS 宏多语句
- c++ - Boost Graph:通过一组点的最短路径
- r - 将 tolower 函数应用于列时出错
- powerbi - powerbi 如何避免循环依赖错误
- react-native - 如何在 React Native Expo 中播放背景音乐?