Like子句不返回所有结果-仅整数

问题描述 投票:0回答:1

当注释记入客户信息时,可能会参考发票。我试图提取一份包含发票和相关注释的报告。

我努力了一段时间,因为这两列使用的是2种不同的数据类型(Varchar和Text)。我最终决定使用强制转换来更改数据类型并将其导入到临时表中。既然我正在使用相同的数据类型VarChar,我认为它应该更容易。这是我用来创建临时表的语句。

select c.clientid, c.searchname, cast(nom.ref as varchar(150)) as Ref,
n.CreatedDate, s.name as 'Note Creator', nt.NoteTypeName, n.RecordID, 
cast(n.note as varchar(150)) as note
into #ARNotes
from tblnotes n
join tblclient c on c.clientid=n.RecordID
join tblstaff s on s.staffid=n.CreatedByID
join tblNoteTypes nt on nt.NoteTypeID=n.NoteTypeID
join tblNominal nom on nom.ClientID=c.ClientID
where n.Note is not null

所有注释都在我的临时表中正确显示了一些。它仍然是原始数据,需要X像Y子句一样神奇。

因此,我的新临时表#ARNotes中的数据示例看起来像这样:

Invoice Number              Notes 
1234                        1234 Here is an example
A111                        Another Example A111
B222                        Note Example B222
9876                        Note Example 9876
5432                        No bill referenced
CCCC                        No bill referenced

我正在使用类似于下面的查询语句的select语句进行查询。我的最终声明将具有更多的逻辑,因此它只会提取过期的发票。

select *
from #ARNotes
where note like ('%'+ref+'%')
order by CreatedDate desc

唯一的问题是,仅在发票仅是数字的情况下才提取发票。如果发票号是字母数字,则不显示。因此,如果我的表使用的是示例数据,则只会将这些结果拉到下面。因此,它省略了A111和B222相关的注释。

Invoice Number              Notes 
1234                        1234 Here is an example
9876                        Note Example 9876

我实际上缺少所有值时缺少什么?还是有可能吗?

where-clause sql-server-2017
1个回答
0
投票

经过进一步检查,我发现带有发票编号的数据带有尾随空格。仅是整数的那些是从我们的旧系统中导入的,并且没有为新系统分配新的参考号/发票号。我将导入临时表的时间调整为

select c.clientid, c.searchname, **rTRIM(CAST(nom.ref AS varchar(150))) AS Ref,**,
n.CreatedDate, s.name as 'Note Creator', nt.NoteTypeName, n.RecordID, 
cast(n.note as varchar(150)) as note
into #ARNotes
from tblnotes n
join tblclient c on c.clientid=n.RecordID
join tblstaff s on s.staffid=n.CreatedByID
join tblNoteTypes nt on nt.NoteTypeID=n.NoteTypeID
join tblNominal nom on nom.ClientID=c.ClientID
where n.Note is not null
© www.soinside.com 2019 - 2024. All rights reserved.