首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SQL substr

Oracle SQL substr
EN

Stack Overflow用户
提问于 2012-10-02 01:44:42
回答 1查看 1.9K关注 0票数 0

我有两张桌子:

代码语言:javascript
复制
Employee(empNo, lName, fName, sex, dob, address, deptno, position)
Zip(city, state, zipcode)

在Employee表中,地址存储如下:55 Maple Ln., AL 55555

是的,我知道这是最可怕的方式存储一个地址,但这是我无法控制的。

我需要在查询中返回empNo、lName、fName、地址的街道部分、州部分、城市和邮政编码。这就是我正在使用的东西,我在让它正常工作时遇到了一点小困难:

代码语言:javascript
复制
SELECT empNo, lName, fName,
    substr(Address,0, INSTR(Address,',')-1) AS streetAddr,
    city,
    substr(Address, INSTR(Address,',')+2,2) AS stateAddr,
    substr(Address,-5) AS zipC
FROM Employee
    JOIN Zip z ON z.zipcode = zipC
WHERE deptNo = '124';

我得到的错误在JOIN语句上;zipC是一个无效的标识符。我的问题是,我试图通过表格的zipcode部分加入Employee和Zip。我只需要这样做,我就可以让城市摆脱邮政编码。

编辑#1

我也尝试过这样做:

代码语言:javascript
复制
SELECT e.empNo, e.lName, e.fName,
    substr(e.Address,0, INSTR(e.Address,',')-1) AS streetAddr,
    z.city,
    substr(e.Address, INSTR(e.Address,',')+2,2) AS stateAddr,
    substr(e.Address,-5) AS zipC
FROM Employee e, Zip z
WHERE deptNo = '124';
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-02 02:00:45

代码语言:javascript
复制
SELECT empNo, lName, fName,
    substr(Address,0, INSTR(Address,',')-1) AS streetAddr,
    city,
    substr(Address, INSTR(Address,',')+2,2) AS stateAddr,
    substr(Address,-5) AS zipC
FROM Employee
    JOIN Zip z ON z.zipcode = substr(Address,-5)
WHERE deptNo = '124';

也就是说,不要在联接中使用别名。

如果有任何前导或尾随空格的危险,您也可以在确定INSTR或substr之前修剪()您的地址值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12683473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档