提问人:Amol Salunke 提问时间:10/3/2023 最后编辑:LittlefootAmol Salunke 更新时间:10/3/2023 访问量:29
表列值的字符串修改
String modification for table column values
问:
我需要一个来自列值的字符串的解决方案,例如 to 。
上述解决方案的 Oracle SQL 查询是什么。'abc xyz-1234'
'xyz, abc'
SELECT SUBSTR (COLUMN_NAME,
INSTR (' ', COLUMN_NAME) + 1,
LENGTH (5) - SUBSTR ('%[^a-z,A-Z, ]%', COLUMN_NAME) - 1)
+ ','
+ SUBSTR (COLUMN_NAME, 1, INSTR (' ', COLUMN_NAME) - 1)
FROM table_name;
我在 Oracle SQL 中收到 Invalid number 错误。
答:
0赞
MT0
10/3/2023
#1
您可以使用:
SELECT SUBSTR(column_name, spos + 1, hpos - spos - 1)
|| ','
|| SUBSTR(column_name, 1, spos - 1) AS formatted_column_name
FROM (
SELECT column_name,
INSTR(column_name, ' ') AS spos,
INSTR(column_name, '-') AS hpos
FROM table_name
);
或者,使用正则表达式(键入较少,但可能较慢):
SELECT REGEXP_REPLACE(column_name, '^(.*?) (.*?)-.*$', '\2,\1')
AS formatted_column_name
FROM table_name
其中,对于示例数据:
CREATE TABLE table_name (column_name) AS
SELECT 'abc xyz-1234' FROM DUAL;
两个输出:
FORMATTED_COLUMN_NAME |
---|
XYZ,ABC公司 |
0赞
Littlefoot
10/3/2023
#2
或者,检查正则表达式是否适合您的需求。
示例数据:
SQL> with test (col) as
2 (select 'abc xyz-1234' from dual)
查询:
3 select regexp_substr(col, '\w+', 1, 2) ||', '||
4 regexp_substr(col, '\w+', 1, 1) as result
5 from test;
RESULT
--------
xyz, abc
SQL>
下一个:SQL 将值拆分为多行
评论