我遇到了一些麻烦。我正在尝试构建一个使用“开始于”逻辑的 SQL 查询。先说一点背景...
在我负责编写报告的数据库中,有一个“用户”表和一个“销售人员”表,销售人员属于一个用户。在一个不太聪明的举动中,数据库的设计者决定通过子字符串匹配销售人员与他们的员工代码相关联。例如:
John Smith 的“employee_code”将是“JS”。但他有多个“销售人员”来区分他不同的销售类型。所以他可能有“JS1”、“JS2”、“JS3”等,作为他的“salesperson_code”。
为了显示:
user table:
|----------|-----------|----------|---------------|
| username | firstname | lastname | employee_code |
|----------|-----------|----------|---------------|
| JSMITH | John | Smith | JS |
|----------|-----------|----------|---------------|
salesperson table:
|------------------|------------------|
| salesperson_name | salesperson_code |
|------------------|------------------|
| John Smith 1 | JS1 |
| John Smith 2 | JS2 |
| John Smith 3 | JS3 |
|------------------|------------------|
销售员表上没有将它们链接到用户表的外键,只有员工代码的子字符串。
我不记得我在哪里找到了这个答案,但在我的查询中我一直在这样做:
select user.name
from user user
inner join salesperson spn on spn.salesperson_code like user.employee_code || '%'
这个逻辑成功地完成了“开始于”匹配。但是,有些用户的员工代码为空白,他们也匹配此查询。
我在寻找什么:如何修改此查询,以便如果employee_code 为空白,它将不匹配?我是 Oracle 查询的新手。其他 DBMS 有一个与空白字段不匹配的开头子句。
预先感谢您的帮助!