如果我正在编写一个返回地址列表(街道号和街道名称)的查询,但这些值存储在同一列中,有没有办法将数字和街道名称拆分为2个不同的列?
EXP:
select address
from customer
期望的结果:
123 | any st
345 | some st
这很容易'可能的?
我只有读访问权限,数据库中什么都不会改变;这是&#39; <#39;
答案 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
但是分隔符应该是一些唯一的字符串或字符串,因为''空格可能已经是地址的一部分。