【问题标题】:How to tell sql server to not include results that end with specific letters/numbers如何告诉sql server不包含以特定字母/数字结尾的结果
【发布时间】:2023-02-07 23:58:49
【问题描述】:

因此,对于我得到的任务,我必须创建一个请求,列出航班号 (varchar)、航班日期以及是否有中途停留(varchar,如果没有则返回 NULL)。但是,要提出的条件是航班日期必须在2005年9月1日至2006年12月30日之间,并且航班号不得以8和/或9结尾。

所以我提出了以下要求:

SELECT ID_VOL,DATE_DEP,ESCALE
FROM VOL
WHERE ID_VOL NOT LIKE ('%8','%9') AND DATE_DEP BETWEEN '2005-09-01' AND '2006-12-30'

该请求不起作用。我只尝试了一个 ID_VOL 条件,它工作正常,但当我放置第二个时它不起作用。如果我为每个数字放置两次相同的条件,它会起作用,但分配指定我只能用一个条件/运算符来完成。所以我有点坚持那个。

【问题讨论】:

  • 您不能对列表使用 LIKE。如果要排除以'8''9' 结尾的值,为什么不使用模式?例如 SomeCol LIKE '[ABC]' 将匹配字符 'A''B''C'
  • 好吧,我说的是列表,我的意思是它显示数据,但它们还没有向我们展示模式,所以我现在只能使用简单的条件

标签: sql-server


【解决方案1】:

你的 LIKE 表达式是错误的。

SELECT ID_VOL,DATE_DEP,ESCALE
FROM VOL
WHERE ID_VOL NOT LIKE '%[89]' AND 
      DATE_DEP BETWEEN '20050901' AND '20061230';

【讨论】:

  • 我的作业指定我只能对航班号使用一个比较运算符,所以两个都只有一个 NOT LIKE
  • @Alexd'Astous,我写了很长的路并已经编辑了。
  • 因此,根据这里的 cmets 和问题,您只能有一个 LIKE 表达式但不能使用模式?你会遇到困难,@Alexd'Astous。您需要在此处使用 2 LIKE 表达式或模式。
  • @CetinBasoz 我没有注意到你的编辑,会尝试一下然后再回来找你
  • @CetinBasoz 成功了!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-08-21
  • 2022-12-09
  • 2020-04-26
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
相关资源
最近更新 更多