【问题标题】:SQL Concatenation Query - Four As in Concatenated NameSQL 连接查询 - 连接名称中的四个 As
【发布时间】:2016-10-24 00:03:39
【问题描述】:

我正在尝试在 SQL 中创建视图。我们将此视图称为“A7T8”。该视图将从数据库中提取名字和姓氏,并将名字和姓氏连接到一个名为 FullName 的字段中。但是,我只想选择名字和姓氏中至少有四个 As 的串联名称。 (Rebecca Aaronson 不会显示,因为她只有 3 个 As,但会显示 Harry Flanagan。

目前我的代码是:

CREATE VIEW A7T8 AS
SELECT FNAME || ' ' || LNAME AS FULLNAME
FROM A7
WHERE Upper(LNAME) LIKE '%A%A%A%A%' OR Upper(FNAME) LIKE '%A%A%A%A%'
ORDER BY LNAME, FNAME;

但这只会提取名字中有四个 As 或姓氏中有四个 As 的名字。我希望它在连接的全名中提取至少有四个 As 的名称。我该怎么做?

【问题讨论】:

  • 正在使用的 dbms 是什么?

标签: sql


【解决方案1】:

你可以简单地写:

CREATE VIEW A7T8 AS
SELECT FNAME || ' ' || LNAME AS FULLNAME
FROM A7
WHERE UPPER(FNAME || ' ' || LNAME) LIKE '%A%A%A%A%'
ORDER BY LNAME, FNAME;

【讨论】:

    【解决方案2】:

    你可以试试下面的方法

    CREATE VIEW A7T8 AS
    select FNAME + ' ' + LNAME AS FULLNAME
    from [A7]
    where len(FNAME  + LNAME) - len(Replace(Upper(FNAME) + Upper(LNAME),'A','')) >= 4
    ORDER BY LNAME, FNAME;
    

    【讨论】:

      【解决方案3】:

      我认为 Concat 可以完成这项工作,您必须在查询中使用它,而不是与设计器一起使用

      CREATE VIEW  [dbo].[DEMO_VIEW]
      AS
      
       SELECT Concat('IND_', LIBELLE)  as SECONDLIBELLE,
              CODE as SECONDCODE
      
              from dbo.DEMOTABLE
      
      GO
      

      【讨论】:

        【解决方案4】:

        使用正则表达式。这将首先与 1-4 个 A 匹配

        创建视图 A7T8 为 选择姓名 || '' || LNAME 全名 从 A7 WHERE CONCAT(Upper(LNAME), " ", Upper(FNAME)) 正则表达式 '[A]{1,4}' 按 LNAME、FNAME 排序;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-28
          • 1970-01-01
          • 2011-04-13
          • 1970-01-01
          • 1970-01-01
          • 2012-04-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多