【问题标题】:How to Select a substring in Oracle SQL如何在 Oracle SQL 中选择子字符串
【发布时间】:2018-03-14 23:02:06
【问题描述】:

假设我有一个 customer 表,其中包含 Firstnamelastname 列 我希望能够编写一个查询来选择所有拥有 确切的姓氏模糊的名字

当我在名字列上运行时,子字符串按预期返回值

查询

SELECT SUBSTR(firstname,1,4) from customer;

**output:**
ABCD
qwry
cvbn etc

但我不确定如何让这项工作匹配 2 条记录,其中一个客户的名字的前 4 个字符与另一个客户的名字相同。

示例:

客户 1:名字=ABCDXYZ 姓氏=SSS

客户 2:名字=ABCD 姓氏=SSS

预期的结果是能够在输出中看到这两条记录

【问题讨论】:

  • 你有什么问题?

标签: sql oracle substring


【解决方案1】:

以下查询将获取具有相同姓氏和相同名字前四个字符的记录。 它使用自连接。希望表有一个像 id 这样的主键。

SELECT distinct c1.firstname, 
                c1.lastname, 
                c2.firstname, 
                c1.lastname
  FROM customer c1, customer c2
 WHERE c1.id <> c2.id 
   AND c1.lastname = c2.lastname
   AND substr(c1.firstname,1,4) = substr(c1.firstname,1,4)

【讨论】:

  • 完美!小修正 substr(c1.firstname,1,4) = substr(c2.firstname,1,4)
  • 哦,那是错字
【解决方案2】:

不完全确定我理解你想要做什么,但如果你知道 firstName 常见的“前缀”,你可以这样做:

SELECT * from Customer WHERE firstname LIKE 'ABCD%' AND lastName = 'SSS';

【讨论】:

  • 基本上我正在尝试根据模糊名字(2 个客户记录谁匹配名字的前 4 个字符)和确切的姓氏来查找匹配项。我计划从客户表中提取潜在的匹配报告.话虽如此,我没有具有相同姓氏和名字模糊的客户的信息。这就是我试图通过运行此查询来实现的目标。
猜你喜欢
  • 1970-01-01
  • 2018-10-25
  • 2020-03-19
  • 2020-12-30
  • 2015-07-08
  • 2011-05-22
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多