回答

收藏

SQL喜欢存储过程

技术问答 技术问答 176 人阅读 | 0 人回复 | 2023-09-14

这是一个简单的问题,我似乎想不出解决办法。
( Q/ j6 Z4 N5 q$ {2 n: M2 U0 [1 @我在存储过程中定义了这一点:) n0 X$ G* M) i2 u  f! a$ B, Q2 F
@communityDesc varchar(255) = NULL@communityDesc是“ aaa,bbb,ccc”/ }0 ~$ L! i" h: @, R$ n
在我的实际查询中,我试着用 IN+ X. s. Y0 P9 [2 X3 R( M. y
WHERE AREA IN (@communityDesc)但这不起作用,因为我的逗号在字符串中,而不是这样的 aaa”,“ bbb”,“ ccc”
+ O" j# m! U- |' G" b所以我的问题是,是的@communityDesc我能做什么,让它和我在一起?IN句子一起工作,比如重新格式化字符串?: Z/ |" i9 @4 j  k
                                                                4 w( a) M& A/ z0 `
    解决方案:                                                               
3 O3 B4 E: z: K8 \1 W$ h- R9 q% _                                                                首先,您最多可以创建一个函数来划分字符串,例如以下代码4 V( z! D0 _  j$ _* O8 I
CREATE FUNCTION dbo.splitstring ( @stringToSplit VARCHAR(MAX) )RETURNS @returnList TABLE ([Name] [nvarchar] (500))ASBEGIN DECLARE @name NVARCHAR(255) DECLARE @pos INT WHILE CHARINDEX(',',@stringToSplit) > 0 BEGIN  SELECT @pos  = CHARINDEX(',',@stringToSplit)    SELECT @name = SUBSTRING(@stringToSplit,1,@pos-1)  INSERT INTO @returnList   SELECT @name  SELECT @stringToSplit = SUBSTRING(@stringToSplit,@pos 1,LEN(@stringToSplit)-@pos) END INSERT INTO @returnList SELECT @stringToSplit RETURNEND所以您可以使用此功能进行查询
0 X0 ]7 @- j! p2 }% G2 G& H% M4 Q' g/ U) ^WHERE AREA IN (dbo.splitstring(@communityDesc))
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则