Sql 使用自定义项基于字符串填充一系列1和0
我在sql中有一个表,它有一个名为[message]的列。我需要使用一个UDF来填充1或0,取决于该子字符串是否包含“LHL” 我的代码:Sql 使用自定义项基于字符串填充一系列1和0,sql,variables,udf,Sql,Variables,Udf,我在sql中有一个表,它有一个名为[message]的列。我需要使用一个UDF来填充1或0,取决于该子字符串是否包含“LHL” 我的代码: create function dbo.generate ( @result varchar(max) ) returns int as begin declare @message varchar(max) = (Select [message] from POST) if (PAT
create function dbo.generate
(
@result varchar(max)
)
returns int
as
begin
declare @message varchar(max) = (Select [message] from POST)
if (PATINDEX('%LHL%', @message) > 0)
begin
set @result = '1'
end
else
set @result = '0'
return @result
end
go
select dbo.generate('%LHL%')
有了这个,我得到了一个错误:
Msg 512,16级,状态1,第1行
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时
我只需要一个有0和1的列表。我可以使用PATINDEX生成一个列表,该列表可以告诉我LHL的开始位置,但如果如图所示存在,则似乎无法将数字更改为1。还必须使用UDF而不是CTE
with cte as
(select [message] from POSt
),
pos as
(select patindex('%LHL%',[message]) pos, [message] from cte
union all
select pos+patindex('%LHL%',substring([message], pos+1, len([message]))) pos, [message] from pos
where patindex('%LHL%',substring([message], pos+1, len([message])))>0
)
select pos from pos
SELECT语句declare@message varcharmax=SELECT[message]from POST用于设置变量@message的值返回多个值。限制SELECT语句一次只返回一个值,以便它可以存储在“@message”变量中。SELECT语句声明@message varcharmax=SELECT[message]from POST用于设置变量@message的值返回多个值。限制SELECT语句一次只返回一个值,以便它可以存储在“@message”变量中。SELECT语句声明@message varcharmax=SELECT[message]from POST用于设置变量@message的值返回多个值。限制SELECT语句一次只返回一个值,以便它可以存储在“@message”变量中。SELECT语句声明@message varcharmax=SELECT[message]from POST用于设置变量@message的值返回多个值。限制SELECT语句一次只返回一个值,以便将其存储在“@message”变量中。为什么不使用EXISTS子句检查行的存在性
IF(EXISTS(Select [message] from POST WHERE [message] LIKE '%LHL%'))
BEGIN
SET @result = '1'
END
ELSE
BEGIN
SET @result = '0'
END
RETURN @result
根据您想要实现的目标,即检查LHL是否存在,这是最佳选择。但是,如果您想通过将所有位置设置为字符串,则首先将整个列数据转换为字符串,然后进行搜索。为什么不使用EXISTS子句检查行的存在性
IF(EXISTS(Select [message] from POST WHERE [message] LIKE '%LHL%'))
BEGIN
SET @result = '1'
END
ELSE
BEGIN
SET @result = '0'
END
RETURN @result
根据您想要实现的目标,即检查LHL是否存在,这是最佳选择。但是,如果您想通过将所有位置设置为字符串,则首先将整个列数据转换为字符串,然后进行搜索。为什么不使用EXISTS子句检查行的存在性
IF(EXISTS(Select [message] from POST WHERE [message] LIKE '%LHL%'))
BEGIN
SET @result = '1'
END
ELSE
BEGIN
SET @result = '0'
END
RETURN @result
根据您想要实现的目标,即检查LHL是否存在,这是最佳选择。但是,如果您想通过将所有位置设置为字符串,则首先将整个列数据转换为字符串,然后进行搜索。为什么不使用EXISTS子句检查行的存在性
IF(EXISTS(Select [message] from POST WHERE [message] LIKE '%LHL%'))
BEGIN
SET @result = '1'
END
ELSE
BEGIN
SET @result = '0'
END
RETURN @result
根据您想要实现的目标,即检查LHL是否存在,这是最佳选择。但是,如果您希望通过将所有位置设置为字符串,则首先将整个列数据转换为字符串,然后进行搜索。您也可以尝试为“POST”表的每一行调用函数。通过这种方式,您可以一次从[message]列传递一个值。您可以在函数中使用该特定值调用“@message”变量,并且可以为每一行返回“1”或“0”。您还可以尝试为“POST”表的每一行调用函数。通过这种方式,您可以一次从[message]列传递一个值。您可以在函数中使用该特定值调用“@message”变量,并且可以为每一行返回“1”或“0”。您还可以尝试为“POST”表的每一行调用函数。通过这种方式,您可以一次从[message]列传递一个值。您可以在函数中使用该特定值调用“@message”变量,并且可以为每一行返回“1”或“0”。您还可以尝试为“POST”表的每一行调用函数。通过这种方式,您可以一次从[message]列传递一个值。您可以在函数中使用该特定值创建“@message”变量,并且可以为每行返回“1”或“0”。