【问题标题】:How do I list the names and addresses for those employees whose addresses has at least 3 digits?如何列出地址至少为 3 位的员工的姓名和地址?
【发布时间】:2016-06-20 14:04:51
【问题描述】:
DROP TABLE IF EXISTS employee;

CREATE TABLE employee (

  Fname varchar(15) NOT NULL,

  Minit char(1) default NULL,

  Lname varchar(20) NOT NULL,

  Ssn varchar(11) NOT NULL,

  Bdate date default NULL,

  Address varchar(50) default NULL,

  Sex char(1) default NULL,

  Salary float(10,2) default NULL,

  Super_ssn char(9) default NULL,

  Dno int(11) NOT NULL,

  PRIMARY KEY  (Ssn)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我猜

SELECT Fname, Lname, Address 
FROM employee 
WHERE Address  WHERE Address REGEXP '^[0-9]{3}[ ]';

除此之外只返回正好 3 位数字的地址

【问题讨论】:

  • 这适用于哪个 RDBMS?请添加标签以指定您使用的是mysqlpostgresqlsql-serveroracle 还是db2 - 或其他完全不同的东西。
  • {3} 更改为{3,}。这将使其成为三位数或更多位数的未指定范围。

标签: sql regex string digits


【解决方案1】:

使用{m,}。这匹配至少 m 次出现的前面的子表达式

SELECT Fname, Lname, Address 
FROM employee 
WHERE Address  WHERE Address REGEXP '^[0-9]{3,}[ ]';

【讨论】:

    【解决方案2】:

    长度函数的使用

    SELECT FNAME, LNAME, ADDRESS
    FROM EMPLOYEE
    WHERE LENGTH(ADDRESS) >= 3;
    

    【讨论】:

    • 三个或更多数字呢?
    猜你喜欢
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多