首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL-SERVER搜索数组

SQL-SERVER搜索数组
EN

Stack Overflow用户
提问于 2016-10-11 06:41:04
回答 1查看 2.2K关注 0票数 2

这是一种使用SQL搜索数组的方法吗?

代码语言:javascript
运行
复制
SELECT Top 1 IVDTL.YourPONo
FROM IV
  INNER JOIN IVDTL
    ON IV.DOCKEY = IVDTL.DOCKEY
WHERE DocNo = /*array[0]*/

有人有主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-11 06:42:57

对于Mysql,您可以使用FIND_IN_SET

代码语言:javascript
运行
复制
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函数

代码语言:javascript
运行
复制
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的方法

代码语言:javascript
运行
复制
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)
   );

在创建函数之后,使用查询中的函数

代码语言:javascript
运行
复制
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]',',')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39971686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档