您能帮我选择至少包含1个介于1000和1999之间的值的行吗?我拥有的列(nvarchar(255):
col1
5501, 3500
3001, 3050, 4020
1030, 1010, 1043, 2000
3010, 1420, 8000, 2044
1330, 1330, 8000, 3111
1333, 1132, 8000, 1332理想的结果:
1030, 1010, 1043, 2000
3010, 1420, 8000, 2044
1330, 1330, 8000, 3111
1333, 1132, 8000, 1332我尝试使用自己编写的函数splitstring:
ALTER FUNCTION [dbo].[fn_splitstring] ( @stringToSplit VARCHAR(MAX) )
RETURNS
@returnList TABLE ([Name] [nvarchar] (500))
AS
BEGIN
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
RETURN
END和string_agg(),但它只适用于单行。
非常感谢。
发布于 2020-03-26 16:42:56
以下是解决方案:
select * from table s
where exists (select * from cmn.dbo.fn_splitstring(s.codes,', ') c
where convert(int,c.item) between 1000 and 1999)其中cmn.dbo.fn_splitstring如上所述。
https://stackoverflow.com/questions/60862857
复制相似问题