这是一种使用SQL搜索数组的方法吗?
SELECT Top 1 IVDTL.YourPONo
FROM IV
INNER JOIN IVDTL
ON IV.DOCKEY = IVDTL.DOCKEY
WHERE DocNo = /*array[0]*/
有人有主意吗?
发布于 2016-10-11 06:42:57
对于Mysql
,您可以使用FIND_IN_SET
SELECT Top 1 IVDTL.YourPONo
from IV
INNER JOIN IVDTL
ON IV.DOCKEY = IVDTL.DOCKEY
WHERE FIND_IN_SET(DocNo ,'array[0]') > 0
更新:
对于SQL SERVER
您需要一个拆分字符串函数,并将数组中的值拆分为各个行。则可用于IN
子句中。
对于SQL SERVER 2016
您可以使用STRING_SPLIT
函数
SELECT Top 1 IVDTL.YourPONo
FROM IV
INNER JOIN IVDTL
ON IV.DOCKEY = IVDTL.DOCKEY
WHERE DocNo in (select value from STRING_SPLIT('array[0]',',')
对于任何比SQL SERVER 2016
小的东西
使用下面优秀文章用正确的方式拆分字符串--或者是下一个最好的方式。中的任何一种方法
这里有一种使用XML
的方法
CREATE FUNCTION dbo.SplitStrings_XML
(
@List NVARCHAR(MAX),
@Delimiter NVARCHAR(255)
)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN
(
SELECT Item = y.i.value('(./text())[1]', 'nvarchar(4000)')
FROM
(
SELECT x = CONVERT(XML, '<i>'
+ REPLACE(@List, @Delimiter, '</i><i>')
+ '</i>').query('.')
) AS a CROSS APPLY x.nodes('i') AS y(i)
);
在创建函数之后,使用查询中的函数
SELECT Top 1 IVDTL.YourPONo
FROM IV
INNER JOIN IVDTL
ON IV.DOCKEY = IVDTL.DOCKEY
WHERE DocNo in (select value from SplitStrings_XML('array[0]',',')
https://stackoverflow.com/questions/39971686
复制相似问题