2
这是一种通过使用SQL搜索数组的方法吗?SQL-SERVER搜索数组
SELECT Top 1 IVDTL.YourPONo
FROM IV
INNER JOIN IVDTL
ON IV.DOCKEY = IVDTL.DOCKEY
WHERE DocNo = /*array[0]*/
任何人有想法吗?
这是一种通过使用SQL搜索数组的方法吗?SQL-SERVER搜索数组
SELECT Top 1 IVDTL.YourPONo
FROM IV
INNER JOIN IVDTL
ON IV.DOCKEY = IVDTL.DOCKEY
WHERE DocNo = /*array[0]*/
任何人有想法吗?
对于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
上使用任何从下面优秀的文章Split strings the right way – or the next best way
下面的方法e为使用的一种方式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]',',')
这表明经过=====“ FIND_IN_SET'不是公认的内置函数名称。 – ChengWan
@ChengWan这里是Mysql官方文档链接http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set –
@ChengWan - 你确定你正在使用'Mysql' –