Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
283 views
in Technique[技术] by (71.8m points)

求一个SQL语句如何写

求一个MYSQL的SQL语句要如何写

建表语句:

CREATE TABLE test01 (
    iid      INT AUTO_INCREMENT PRIMARY KEY,
    sid      VARCHAR(20)  DEFAULT '' NULL,
    type_sid VARCHAR(100) DEFAULT '' NULL
);

插入数据SQL:

INSERT INTO test01 (iid, sid, type_sid) VALUES (1, 'byl', 'kh,gys');
INSERT INTO test01 (iid, sid, type_sid) VALUES (2, 'ts', 'kh');
INSERT INTO test01 (iid, sid, type_sid) VALUES (3, 'xd', 'gys');

我的目标:

制作一个存储过程,就一个传入参数,达到如下的效果

3.1. 当传入参数是 kh 时,可以查询出iid =1 和 iid = 2两笔数据
3.2. 当传入参数是 gys 时,可查出 iid = 1 和 iid = 3
3.3. 当传入参数是 kh,gys 或者 gys,kh时,可查出所有数据(总共就这3笔数据)

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

存储过程

DELIMITER //

CREATE PROCEDURE p3(
    IN param varchar(20)
)
BEGIN
    DECLARE var1 varchar(10) DEFAULT '';
    DECLARE var2 varchar(10) DEFAULT '';
    Set var1 = substring_index(param, ',', 1);
    Set var2 = substring_index(param, ',', -1);
    select * from test01 where find_in_set(var1, `type_sid`) OR find_in_set(var2, `type_sid`);
END //

DELIMITER ;

调用

SET @p0='kh'; CALL `p3`(@p0);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...