-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'不是一個可識別的函數名稱。 –