-1
中有都柱name
和fid
..在这个有逗号分隔的多个值,所以我尽量拆分这些,但这显示了一个错误子查询返回多个值的SQL Server
Create procedure as sp2
@tick int
As
Select
Table 4.column,
Table 5.column,
Table 3.column,
**--so here I used solution like this**
(Select b.fid
from table2 t2
cross apply (Select fid = s2.retval
from [udf-str-parase](t2.fid, ',') s2) b),
(Select b.name
from table2 t2
cross apply (Select name = s2.retval
from [udf-str-parase](t2.name, ',') s2) b),
Table 6.column
From
Table 2
Inner join
table4 on table4.id = table5.id
..........
Where
tick = @tick
我的功能:
CREATE FUNCTION [dbo].[udf-Str-Parse]
(@String varchar(max), @Delimiter varchar(10))
RETURNS TABLE
AS
RETURN
(SELECT
RetSeq = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
FROM
(SELECT x = CAST('<x>'+ replace((SELECT @String as [*] For XML Path('')),@Delimiter,'</x><x>')+'</x>' as xml).query('.')) as A
CROSS APPLY
x.nodes('x') AS B(i)
);
错误:
Subquery returned more than 1 value.
This is not permitted when the sub query follows=, !=, <, <= , >, >=
or when the sub query is used as an expression.
之前或之后在哪里? –
@cooluser - 之前'Where' –
这显示错误'udf-Str-Parse'不是一个可识别的函数名称。 –