在地址编号和街道名称上将地址拆分为2列

时间:2014-05-08 12:27:35

标签: sql select oracle-sqldeveloper

如果我正在编写一个返回地址列表(街道号和街道名称)的查询,但这些值存储在同一列中,有没有办法将数字和街道名称拆分为2个不同的列?

EXP:

select address
from customer

期望的结果:

123 | any st
345 | some st

这很容易'可能的?

我只有读访问权限,数据库中什么都不会改变;这是&#39; <#39;

1 个答案:

答案 0 :(得分:0)

编辑: 忽略了这个答案:我刚刚注意到它的Oracle :(

将此功能添加到您的数据库

CREATE FUNCTION SPLIT_STR(
  x VARCHAR(255),
  delim VARCHAR(12),
  pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');

来源http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

并且sql应该是:

select SPLIT_STR(address,' ',1) as address_num, SPLIT_STR(address,' ',2) as address_desc from customer

但是分隔符应该是一些唯一的字符串或字符串,因为''空格可能已经是地址的一部分。