SQL 查询返回的结果不正确
Incorrect result returned by SQL Query
以下查询返回所有数据,而不是显示 ApprovedByNewTExt 列中包含 [3428] 的记录。
select * from
(
Select Rec_Num,
COALESCE(AppByENo6,AppByENo5,AppByENo4,AppByENo3,AppByENo2,AppByENo1)
As 'ApprovedByNewTExt'
FROM MyTable
)
as output
where ApprovedByNewTExt like '%[3428]%'
花了更多时间确定问题但未能解决。
非常感谢任何建议。
不要在 where ApprovedByNewTExt like '%3428%'
中使用方括号
取决于您要搜索的内容。
现在您搜索包含 3、4、2 或 8 的任何行
如果您想搜索“3428”,请删除 [ 和 ]
如果要搜索“[3428]”,则需要转义 [ 和 ],请参阅 this SO question
假设您使用的是 MS SQL 服务器,您需要转义方括号:
select *
from
(
Select Rec_Num,
COALESCE(AppByENo6,AppByENo5,AppByENo4,AppByENo3,AppByENo2,AppByENo1) As 'ApprovedByNewText'
FROM MyTable
) as output
where ApprovedByNewText like '%\[3428]%' escape '\'
- SQL Fiddle 示例:http://sqlfiddle.com/#!18/6576d/1
- 文档:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql?view=sql-server-2017#pattern-matching-with-the-escape-clause
p.s。刚刚意识到 已经链接到类似的答案;因此,如果这解决了您的问题,请给他 "right answer" 票。留下这个答案,因为它有可运行的代码。
以下查询返回所有数据,而不是显示 ApprovedByNewTExt 列中包含 [3428] 的记录。
select * from
(
Select Rec_Num,
COALESCE(AppByENo6,AppByENo5,AppByENo4,AppByENo3,AppByENo2,AppByENo1)
As 'ApprovedByNewTExt'
FROM MyTable
)
as output
where ApprovedByNewTExt like '%[3428]%'
花了更多时间确定问题但未能解决。
非常感谢任何建议。
不要在 where ApprovedByNewTExt like '%3428%'
取决于您要搜索的内容。
现在您搜索包含 3、4、2 或 8 的任何行
如果您想搜索“3428”,请删除 [ 和 ]
如果要搜索“[3428]”,则需要转义 [ 和 ],请参阅 this SO question
假设您使用的是 MS SQL 服务器,您需要转义方括号:
select *
from
(
Select Rec_Num,
COALESCE(AppByENo6,AppByENo5,AppByENo4,AppByENo3,AppByENo2,AppByENo1) As 'ApprovedByNewText'
FROM MyTable
) as output
where ApprovedByNewText like '%\[3428]%' escape '\'
- SQL Fiddle 示例:http://sqlfiddle.com/#!18/6576d/1
- 文档:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql?view=sql-server-2017#pattern-matching-with-the-escape-clause
p.s。刚刚意识到