如何在Oracle SQL中选择子字符串

如何在Oracle SQL中选择子字符串,sql,oracle,substring,Sql,Oracle,Substring,假设我有一个表customer,其中列Firstname和lastname 我希望能够编写一个查询,选择所有已经 确切的姓氏和 模糊的名字 当我在firstname列上运行此命令时,子字符串将返回预期的值 查询 从customer中选择SUBSTR(firstname,1,4) **output:** ABCD qwry cvbn etc 但我不知道如何让这项工作对2条记录进行匹配,其中一个客户的firstname的前4个字符与另一个客户的firstname相同 示例: 客户1:Firstna

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

当我在firstname列上运行此命令时,子字符串将返回预期的值

查询

从customer中选择SUBSTR(firstname,1,4)

**output:**
ABCD
qwry
cvbn etc
但我不知道如何让这项工作对2条记录进行匹配,其中一个客户的firstname的前4个字符与另一个客户的firstname相同

示例:

客户1:Firstname=ABCDXYZ Lastname=SSS

客户2:Firstname=ABCD Lastname=SSS


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

我不完全确定您想要做什么,但如果您知道名字的通用“前缀”,您可以这样做:


从名为'ABCD%'且姓为'SSS'的客户中选择*

下面的查询将获取具有相同姓氏和相同名字前四个字符的记录。 它使用自连接。希望这个表有一个像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)
选择不同的c1.firstname,
c1.姓氏,
c2.名字,
c1.姓氏
来自客户c1、客户c2
其中c1.id c2.id
和c1.lastname=c2.lastname
和substr(c1.firstname,1,4)=substr(c1.firstname,1,4)

基本上,我正在尝试根据模糊的名字查找匹配项(2个客户记录的名字前4个字符匹配)和确切的姓氏。我计划从客户表中提取一个潜在的匹配报告。我已经说过,我没有相同姓氏和姓氏的客户的信息。这就是我试图通过运行此查询来实现的。完美!小的修正substr(c1.firstname,1,4)=substr(c2.firstname,1,4)哦,是的,那是一个打字错误你的问题是什么?