如何保证搜索指定的行?

时间:2019-05-18 08:01:07

标签: sql oracle plsql

抱歉,我的问题标题令人困惑,因为我不知道如何用一个句子来概括我的问题。

基本上,我得到了一个包含不同公司信息的表。大多数用户不知道主键,因此用户将无法进行查询以搜索指定的公司。他们中的大多数人只知道他们的企业邮政编码和公司名称。

create table business
(post_code varchar2(8) not null,
company_name varchar2(50) not null,
code_name varchar2(58),
compNo varchar(10) constraint pk_business_compNo primary key,
address varchar2(100) not null);

这是一个表格,用于保存有关公司的信息。
post_code是公司的邮政编码 company_name是公司名称 code_name是表的主键,也是post_codecompany_name的串联。 address是公司地址 compNo是主键,它是按以下顺序生成的:

CREATE SEQUENCE primaryKey_sequence
INCREMENT BY 1
START WITH 1
MAXVALUE 9999
NOCYCLE;

然后,我创建了一个触发器来完成串联并从序列中获取主键。

CREATE OR REPLACE TRIGGER tr_uppercas
BEFORE INSERT ON business
FOR EACH ROW
BEGIN 
    IF:NEW.code_name IS NULL THEN
        SELECT replace(upper(:new.post_code),' ' ,'')||replace(upper(:new.company_name),' ','')
            INTO :NEW.code_name FROM DUAL;
    END IF;
    IF:NEW.compNo IS NULL THEN
        SELECT primarykey_sequence.NEXTVAL
            INTO :NEW.compNo FROM DUAL;
    END IF;
END;
/
insert all
INTO business VALUES ('n1 9sV', 'HELLO WoRLD ltd', null, null, 'buckingham palace' )
SELECT * FROM DUAL;

因此,如果我插入此数据,则code_name的值为N19SVHELLOWORLDLTD

我的问题:由于大多数用户只能提供以下两个特定信息:post_codecompany_name,我想知道是否可以通过SQL查询来搜索公司通过提示用户输入company_namepost_code的值,然后将这些值连接起来,然后将这些值变为大写。在这种情况下,应该保证找到code_name的价值和我们期望的公司。

感谢您的帮助!

0 个答案:

没有答案