【问题标题】:MYSQL, How to combine the first 2 letters of the first name and the first 5 letters of the last nameMYSQL,如何组合名字的前2个字母和姓氏的前5个字母
【发布时间】:2013-01-30 14:10:04
【问题描述】:

我正在尝试编写一个 SQL 查询(使用 SELECT 函数),它将获取名字的前两个字母和姓氏的前 5 个字母,然后将它们组合起来并将它们放入一个名为的新列中“用户名。”我试过一起使用 SUBSTRING 和 CONCAT 函数,但我的语法不正确。有谁知道如何做到这一点?

【问题讨论】:

  • 请在此处显示您的代码
  • SELECT LEFT(first_name, 2) AS 'a', SUBSTRING(last_name,1,5) AS 'b' CONCAT(a,b) AS 'User Name' FROM customer_contacts;
  • 有趣的是,如果你用我的名字这样做,你最终会回到你开始的地方!

标签: mysql sql substring concat


【解决方案1】:

您可以同时使用CONCAT()SUBSTRING()

select 
  concat(substring(fname, 1, 2), substring(lname, 1, 5)) UserName
from yourtable

SQL Fiddle with Demo

或者您可以将LEFT()CONCAT() 一起使用:

select 
  concat(left(fname, 2), left(lname, 5)) UserName
from yourtable

SQL Fiddle with Demo

如果您的样本数据是:

CREATE TABLE yourtable (`fname` varchar(4), `lname` varchar(50)) ;

INSERT INTO yourtable (`fname`, `lname`)
VALUES ('John', 'Smithton'),
    ('Abby', 'Jonesing');

两个查询都会返回:

| USERNAME |
------------
|  JoSmith |
|  AbJones |

【讨论】:

    【解决方案2】:

    在 oracle 中,你可以使用类似的东西

    select concat(substr(fname,1,3), substr(lname,1,3)) as username from <table_name>;

    请注意,您也可以使用 substr 来修剪整数数据类型,而 left() 可能仅适用于 varchar。

    【讨论】:

    • 原来的问题是关于MySQL的
    【解决方案3】:

    使用下面几行

    select  concat(left(empfname, 2) + ' ',left(emplname, 2)) UserNamefrom employee
    

    【讨论】:

      【解决方案4】:

      试试下面的查询

      select first_name,
             substr(first_name,1,2)||substr(lower(last_name),1,5) as "USER NAME",
             last_name 
      from employees;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 2023-03-07
        • 1970-01-01
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多