我有一个包含Path列和Client列的表。我想找到无法在路径中的任何位置找到客户端的行。
表格列:
路径
Z:_IMANAGE READ ONLY \ 47640-001 - 002 - Blue Buffalo Company \ 47640.001 - Blue Buffalo \ E-Mail Correspondence \ Internal \ 2766005.1-RE- Invoices.MSG
Client 47640
Matter 1
到目前为止我所拥有的:
select Path, Client, Matter
from DocData
where Imported = 'Y'
and Path Not Like '%' + (select top 1 cast(Client as nvarchar(10)) from DocData) + '%'
答案 0 :(得分:4)
我不明白你使用子查询的原因,以下内容应该有效:
select Path, Client, Matter
from DocData
where Imported = 'Y'
and Path Not Like '%' + cast(Client as nvarchar(10)) + '%'
答案 1 :(得分:1)
您的查询工作正常,您的ncarchar
我认为您的意思是nvarchar
(这样会很好)
即使没有错误,我也不会使用您自己的查询。它不会返回您需要的值。
而是使用不带子查询的缩短查询
更改以下
select Path, Client, Matter
from DocData
where Imported = 'Y'
and Path Not Like '%' + (select top 1 cast(Client as ncarchar(10)) from DocData) + '%'
至(如果您想修复错误)
select Path, Client, Matter
from DocData
where Imported = 'Y'
and Path Not Like '%' + (select top 1 cast(Client as nvarchar(10)) from DocData) + '%'
没有子查询的正确查询
(使用(您自己的查询)前1个子查询,您永远不知道要与哪个行进行比较)
select Path, Client, Matter
from DocData
where Imported = 'Y'
and Path Not Like '%' + cast(Client as nvarchar(10)) + '%'
答案 2 :(得分:1)
尝试使用CHARINDEX()
功能。
CREATE TABLE TestPath
(
[Path] Nvarchar(100),
[Id] int,
Matter bit
)
Insert INTO TestPath
Values
('C:\Test\SQL_Query\47641_001_Blue_Red',47641,1),
('C:\Test\SQL_Query\47642_001_Blue_Red',47642,1),
('C:\Test\SQL_Query\47643_001_Blue_Red',47643,1),
('C:\Test\SQL_Query\47646_001_Blue_Red',47644,1),
('C:\Test\SQL_Query\47649_001_Blue_Red',47645,1)
select [Path], id, Matter
from TestPath
where CHARINDEX(Cast(Id as Varchar(10)),[Path])<>0
这将为您提供所需的结果。