我正在尝试为以下代码编写SQL语句或简单的过程。 有列名:department_name
包含以下字符串的字符:将字符串拆分为2列Oracle
First Name&Second Name [W]
我需要拆分两件事情: 在一列在第二列名为department_name
和[W]
First Name&Second Name
称为department_code
。
我需要做几百行。 在这种情况下,过程或sql语句将如何显示? 长度字符串和部门名称不同的字数的..
我正在尝试为以下代码编写SQL语句或简单的过程。 有列名:department_name
包含以下字符串的字符:将字符串拆分为2列Oracle
First Name&Second Name [W]
我需要拆分两件事情: 在一列在第二列名为department_name
和[W]
First Name&Second Name
称为department_code
。
我需要做几百行。 在这种情况下,过程或sql语句将如何显示? 长度字符串和部门名称不同的字数的..
SELECT TRIM(SUBSTR(department_name, 1, INSTR(department_name, '[') - 1))
AS department_name,
SUBSTR(department_name, INSTR(department_name, '['))
AS department_code
FROM your_table;
或
SELECT REGEXP_SUBSTR(department_name, '(.*?)\s*(\[.*?\])', 1, 1, NULL, 1)
AS department_name,
REGEXP_SUBSTR(department_name, '(.*?)\s*(\[.*?\])', 1, 1, NULL, 2)
AS department_code
FROM your_table;
,或者,如果你不想在部门代码,然后括号:
SELECT REGEXP_SUBSTR(department_name, '(.*?)\s*\[(.*?)\]', 1, 1, NULL, 1)
AS department_name,
REGEXP_SUBSTR(department_name, '(.*?)\s*\[(.*?)\]', 1, 1, NULL, 2)
AS department_code
FROM your_table;
如果department_code显示为[104],您希望第二列显示** [104] **(带方括号)还是仅显示** 104 **? – mathguy
我只需要104 – m4ndy