我如何获得这样的数据
从application_data
中选择Service_id从service_type中选择ID,名称
我正在尝试获得这样的输出,基于id数据应该像这样结合
我试图在函数中获取数据
ALTER FUNCTION [dbo].[get_service_type]
(@serviceid VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
declare @sql varchar(500), @s1 varchar(500)
SET @s1=( select '('''+REPLACE(''+@serviceid+'',',',''',''')+''')' as Str)
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' , '') + name
FROM service_type
WHERE id !=0 and id in(@serviceid)
RETURN @s1
END
select dbo.dbo.serviceType_Split('23,24,25'))
但我仍然面临着这个问题......
指导我如何实现这一目标..
答案 0 :(得分:0)
也许这很有用: 在application_data表的service_id的前面和后面添加一个逗号,并使用PATINDEX查找逗号包含的id
答案 1 :(得分:0)
CREATE FUNCTION
为ID, Nam
application_data
e
CREATE FUNCTION dbo.fnCSVStr2Table(@CSVStr VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @Tbl TABLE (service_id VARCHAR(50), service_name VARCHAR(100))
DECLARE @SubStr VARCHAR(100), @i INT
DECLARE @List_service_name VARCHAR(1000)
SET @i = CHARINDEX(',', @CSVStr, 0)
WHILE @i > 0
BEGIN
SET @SubStr = LEFT(@CSVStr,@i-1)
INSERT INTO @Tbl
SELECT * FROM service_type WHERE id = @SubStr
SET @CSVStr = SUBSTRING(@CSVStr, @i+1, 1000)
SET @i = CHARINDEX(',', @CSVStr, 0)
END
INSERT INTO @Tbl
SELECT * FROM service_type WHERE id = LTRIM(RTRIM(@CSVStr))
SELECT @List_service_name = COALESCE(@List_service_name + ', ', '') + service_name
FROM @Tbl
WHERE service_name IS NOT NULL
RETURN @List_service_name
END
然后,选择:
SELECT service_id
FROM application_data
CROSS APPLY fnCSVStr2Table(service_id)