【问题标题】:SQL Find names that contain a letter (without using Like)SQL 查找包含字母的名称(不使用 Like)
【发布时间】:2016-09-10 21:10:30
【问题描述】:

我需要编写一个 select 语句,从包含字母 A 的列中返回所有姓氏。我不能使用 LIKE。我正在尝试使用SUBSTR 这样做。

【问题讨论】:

  • 什么味道的sql?
  • 好的。听起来很棒。告诉我们你什么时候成功的。或者你有什么问题吗?
  • Oracle SQL。我在格式化 SUBSTR 时遇到问题。我有要检查的第一个字符的列位置,但我不知道如何输入“a”作为返回名称的标准。 (last_name, 1, ?) 不确定我是把它设置为“a”还是在括号中包含“a”。
  • 对我来说听起来像是家庭作业。我认为家庭作业问题是可以的,但大多数人会寻求更多的努力。
  • 为什么你不能使用LIKE?在不了解背景的情况下,这个问题对其他人永远不会有帮助,因此不适合本网站。

标签: sql oracle select substring


【解决方案1】:

我不认为substr 是要走的路。另一方面,instr 可能会成功:

SELECT last_name
FROM   mytable
WHERE  INSTR(last_name, 'A') > 0

编辑:
正如 David Bachmann Jeppesen 所提到的,Oracle 区分大小写,因此如果您想查找包含任何大小写“A”的姓氏,您可以执行以下操作:

SELECT last_name
FROM   mytable
WHERE  INSTR(UPPER(last_name), 'A') > 0

【讨论】:

  • 我很感激穆雷尼克! > 0 仅当至少有 1 个名称包含“A”时才返回它?
  • 完美。以防万一 - 请记住 Oracle 区分大小写。 :)
  • @chaosdecides: 它返回所有 last_name 包含 'A' 的行。
  • @DavidBachmannJeppesen 好点,谢谢。将此编辑到我的答案中。
  • INSTR 函数返回找到第一个字符的索引,如果没有找到则返回 0。
猜你喜欢
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2016-06-17
  • 1970-01-01
相关资源
最近更新 更多