有一栏是部门名称。部门名称由名称、连字符和部门编号组成。在某些情况下,部门名称中也包含连字符。因此,一个值中最多有 2 个连字符。我需要创建两个单独的列,部门名称和部门编号。
我能够使用正确的函数分隔部门编号,因为部门编号始终是 5 个数字。然而,部门名称是我无法弄清楚的。
通常,如果号码始终为 5 位数字,则:
在 Oracle 中,您可以使用:
SELECT department_name,
SUBSTR(department_name, 1, LENGTH(department_name) - 6) AS name,
SUBSTR(department_name, -5) AS department_number
FROM departments;
对于样本数据:
CREATE TABLE departments (department_name VARCHAR(200));
INSERT INTO departments (department_name) VALUES ('accounting-00001');
INSERT INTO departments (department_name) VALUES ('human-resources-00002');
输出:
DEPARTMENT_NAME | 姓名 | DEPARTMENT_NUMBER |
---|---|---|
会计-00001 | 会计 | 00001 |
人力资源-00002 | 人力资源 | 00002 |
在 SQL Server 中,您可以使用:
SELECT department_name,
SUBSTRING(department_name, 1, LEN(department_name) - 6) AS name,
SUBSTRING(department_name, LEN(department_name) - 4, 5) AS department_number
FROM departments;
哪个输出:
部门名称 | 名字 | 部门编号 |
---|---|---|
会计-00001 | 会计 | 00001 |
人力资源-00002 | 人力资源 | 00002 |