oracle如何在数据中添加换行符
How to add new line separator into data for oracle
我正在研究显示来自 oracle 的数据。
有没有办法在 table 中生成以下数据:
示例:
'1.somedata, 2.somedata, 3.somedata, 4.somedata, 5.somedata'
显示为:
示例:
'1. somedata
2. somedata
3. somedata
4. somedata
5. somedata'
在界面上?
我是否将新行分隔符直接添加到数据中?
还是在查询时将它们分隔成新行?
或者还有其他简单的方法吗?
谢谢。
有很多方法可以做到这一点,如果您从列中选择,这里有一种方法:
SELECT REPLACE ('1.somedata, 2.somedata, 3.somedata, 4.somedata, 5.somedata', ',', CHR (13) || CHR (10)) AS split
FROM DUAL;
1.somedata
2.somedata
3.somedata
4.somedata
5.somedata
检查下面的示例查询,它将逗号分隔的列表数据转换为行
SELECT substr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,',
( case when rownum = 1 then 1
else instr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,', ',', 1, rownum - 1 ) + 1
end ),
instr( substr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,',
( case when rownum = 1 then 1
else instr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,', ',', 1, rownum - 1 ) + 1
end )
), ',' ) - 1
) as data
FROM dual
CONNECT BY LEVEL <= length( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,' ) - length ( replace('1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,', ',') )
希望对您有所帮助!
请记住,Apex 正在生成网页,这意味着最终结果是 HTML。然而,Apex 有时也会为您转义特殊的 HTML 字符,例如 < 和 &。由于您正在查看 table,我假设您的数据源是查询,而您的 "somedata" 字段是单列。试试这个:
SELECT REPLACE( somedata_column, ',', '<br />' )
FROM mytable
你不说是什么版本的Apex。在 Apex 4.x 中,该列需要设置为标准报告列,这将从 <br>
元素中停止 Apex。我忘记了 Apex 5.x.
中的列类型
我个人会使用 listagg 函数并使用“
”作为分隔符。
SELECT LISTAGG(last_name, '
')
组内(按 hire_date、last_name 排序)"Emp_list"、
最小值(hire_date) "Earliest"
来自员工
其中 department_id = 30;
我正在研究显示来自 oracle 的数据。
有没有办法在 table 中生成以下数据:
示例:
'1.somedata, 2.somedata, 3.somedata, 4.somedata, 5.somedata'
显示为:
示例:
'1. somedata
2. somedata
3. somedata
4. somedata
5. somedata'
在界面上?
我是否将新行分隔符直接添加到数据中?
还是在查询时将它们分隔成新行?
或者还有其他简单的方法吗?
谢谢。
有很多方法可以做到这一点,如果您从列中选择,这里有一种方法:
SELECT REPLACE ('1.somedata, 2.somedata, 3.somedata, 4.somedata, 5.somedata', ',', CHR (13) || CHR (10)) AS split
FROM DUAL;
1.somedata
2.somedata
3.somedata
4.somedata
5.somedata
检查下面的示例查询,它将逗号分隔的列表数据转换为行
SELECT substr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,',
( case when rownum = 1 then 1
else instr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,', ',', 1, rownum - 1 ) + 1
end ),
instr( substr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,',
( case when rownum = 1 then 1
else instr( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,', ',', 1, rownum - 1 ) + 1
end )
), ',' ) - 1
) as data
FROM dual
CONNECT BY LEVEL <= length( '1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,' ) - length ( replace('1.AL,2.AL,3.AL,4.AL,5.AL,6.AL,', ',') )
希望对您有所帮助!
请记住,Apex 正在生成网页,这意味着最终结果是 HTML。然而,Apex 有时也会为您转义特殊的 HTML 字符,例如 < 和 &。由于您正在查看 table,我假设您的数据源是查询,而您的 "somedata" 字段是单列。试试这个:
SELECT REPLACE( somedata_column, ',', '<br />' )
FROM mytable
你不说是什么版本的Apex。在 Apex 4.x 中,该列需要设置为标准报告列,这将从 <br>
元素中停止 Apex。我忘记了 Apex 5.x.
我个人会使用 listagg 函数并使用“
”作为分隔符。
SELECT LISTAGG(last_name, '
')
组内(按 hire_date、last_name 排序)"Emp_list"、
最小值(hire_date) "Earliest"
来自员工
其中 department_id = 30;