Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql。在操作数中使用like_Sql_Sql Server - Fatal编程技术网

Sql。在操作数中使用like

Sql。在操作数中使用like,sql,sql-server,Sql,Sql Server,我正在使用SQLServer2005。 我正试图搜索那些名字可能不多的人。 大概是这样的: select PersonID from Person where Name like + '%' (select [value] dbo.fnSplit('David;John;Kevin', ';')) + '%' 但这不起作用。试试这个: select PersonID from Person where Name like + '%David%' union select PersonID f

我正在使用SQLServer2005。 我正试图搜索那些名字可能不多的人。 大概是这样的:

select PersonID from Person 
where Name like + '%' (select [value] dbo.fnSplit('David;John;Kevin', ';')) + '%'
但这不起作用。

试试这个:

select PersonID from Person where Name like + '%David%'
union
select PersonID from Person where Name like + '%John%'
union
select PersonID from Person where Name like + '%Kevin%';
试试这个:

select PersonID from Person where Name like + '%David%'
union
select PersonID from Person where Name like + '%John%'
union
select PersonID from Person where Name like + '%Kevin%';

如果您只是尝试拆分名称并按名称进行比较,请尝试:

SELECT PersonID FROM Person 
WHERE Name IN (select [value] FROM dbo.fnSplit('David;John;Kevin', ';'))

如果您只是尝试拆分名称并按名称进行比较,请尝试:

SELECT PersonID FROM Person 
WHERE Name IN (select [value] FROM dbo.fnSplit('David;John;Kevin', ';'))

您可以这样做,为什么要使用fnSplit:

select PersonID from Person where Name like '%David%'or Name like + '%John%'
or Name like + '%Kevin%'

您可以这样做,为什么要使用fnSplit:

select PersonID from Person where Name like '%David%'or Name like + '%John%'
or Name like + '%Kevin%'
这应该允许您使用您指定的类似项


这应该允许您使用指定的LIKE。

您不能将
LIKE
与多个模式一起使用,但您可以将选择更改为一次使用一个模式:

select PersonID
from Person p
where exists ( select 1 from (
        select [value] as name
        from dbo.fnSplit('David;John;Kevin', ';')
    ) n
    where p.Name like '%'+n.name+'%'
)

您不能像那样使用多个模式,但可以将选择更改为一次使用一个模式:

select PersonID
from Person p
where exists ( select 1 from (
        select [value] as name
        from dbo.fnSplit('David;John;Kevin', ';')
    ) n
    where p.Name like '%'+n.name+'%'
)

因为那是无效的语法,我猜。因为那是无效的语法,我猜。事实上,我的错。但是,我会留下来完成其他的回答:-)的确,我的错。但是,我将把它留给其他答案来完成:-)是的,但是如果fnSplit返回50个名字呢?我不想将其限制为3个名称。是的,但是如果fnSplit返回50个名称呢?我不想把它限制为3个名字。