DROP FUNCTION IF EXISTS `INTE_ARRAY`;
創新互聯-專業網站定制、快速模板網站建設、高性價比五指山網站開發、企業建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式五指山網站制作公司更省心,省錢,快速模板網站建設找我們,業務覆蓋五指山地區。費用合理售后完善,10年實體公司更值得信賴。
delimiter //
-- 集合交集檢查函數
-- @param varchar(255) setA A 集合 如 "1,3,5,9"
-- @param varchar(255) setB B 集合 如 "8,2,3,7"
-- @return int(1) B 集合內單元在 A集合 內存在則返回 1 否則返回 0
CREATE FUNCTION `INTE_ARRAY` (setA varchar(255),setB varchar(255)) RETURNS int(1)
BEGIN
DECLARE idx INT DEFAULT 0 ; -- B 集合單元索引
DECLARE len INT DEFAULT 0;-- B 集合表達式長度
DECLARE llen INT DEFAULT 0;-- 最后檢查位置
DECLARE clen INT DEFAULT 0;-- 當前檢查位置
DECLARE tmpStr varchar(255);-- 臨時檢查數據集
DECLARE curt varchar(255);-- B 當前檢查的單元
SET len = LENGTH(setB);
WHILE idx len DO
SET idx = idx + 1;
SET tmpStr = SUBSTRING_INDEX(setB,",",idx);
SET clen = LENGTH(tmpStr);
-- 獲取當前 setB 中的單元
IF idx = 1 THEN SET curt = tmpStr;
ELSE SET curt = SUBSTRING(setB,llen+2,clen-llen-1);
END IF;
-- 檢查是否存在于 setA 中
IF FIND_IN_SET(curt,setA) 0 THEN RETURN 1;
END IF;
-- 當前檢查終點與上次檢查終點相同則跳出
IF clen = llen THEN RETURN 0;
END IF;
SET llen = clen;
END WHILE;
RETURN 0;
END;
//
delimiter ;
select INTE_ARRAY("1,3,5,9","8,2,3,7") as is_inte_array;
--select INTE_ARRAY("1,3,5,9","2,8,6,10") as is_inte_array;
--select INTE_ARRAY("10,3,5,9","2,8,6,10") as is_inte_array;
--select INTE_ARRAY("1,30,5,9","2,8,6,10") as is_inte_array;
--select INTE_ARRAY("1,30,5,9","2,30,6,10") as is_inte_array;
SELECT語句的查詢結果是記錄的集合,多個SELECT語句的結果可進行集合操作
分類:
案例:查詢中國的用戶與其他年齡小于18歲的用戶
并集
交集
差集
(1)查詢表中全部信息:
select * from 表名
(2)查詢表中指定列的信息:
select 列1,列2 from 表名
(3)去重:
select distinct 列... from 表名
(4)拼接結果:
select concat(列1,列2) from 表名
(5)設置別名(注意:關鍵字as可以省略)
select 列 as 別名 from 表名
select 列 別名 from 表名
(6)條件查詢:
select 列... from 表名 where 條件
條件中比較運算符:(等于:= ?大于: ?大于等于:= ?小于: ?小于等于:= ?不等于:!= 或 )
(7)where 列 ?比較運算符 ?值
注意:字符串、日期需使用單引號括起來
(8)邏輯運算符(并且:and或? ?或:or? ?非:not或!)
where 條件1 邏輯運算符 條件2
where not 條件
(9)范圍查詢:
where 列 between 條件1 ?and 條件2;? ? ? ? ? //列在這個區間的值where 列 not between 條件1 and 條件2;? ? //不在這個區間where !( 列 between 條件1 and 條件2 );? ? ?//同樣表示不在這個區間
集合查詢(判斷列的值是否在指定的集合中):
where 列 in(值1,值2); ? ? ? ? ?//列中的數據是in后的值里面的where 列 not in(值1,值2); ? //不是in中指定值的數據
null值查詢(注意:列中值為null不能使用=去查詢):
where 列 is null; ?//查詢列中值為null的數據
資料來源?網頁鏈接
select *from emp where name in('張三','李四','王五');
如果()里面的是變量,可以用數組,只不過數組要處理一下
1、選中需要測試的數據庫,并查看測試數據庫表;由于表t_people_info中的id是主鍵,求id的個數即是求數據庫表的總記錄數,代碼如下:
select count(id) from t_people_info;
2、查看數據庫表t_people_info中年齡中最小值,需要用到集合函數min(),代碼如下:
select min(p_age) from t_people_info;
3、查看數據庫表t_people_info中年齡中最大值,需要用到集合函數max(),代碼如下:
select max(p_age) from t_people_info;
4、查看數據庫表t_people_info中年齡中平均值,需要用到集合函數avg(),代碼如下:
select avg(p_age) from t_people_info;
5、若想統計t_people_info中的年齡的總和,用到集合函數sum(),
代碼如下:
select sum(p_age) from t_people_info;
6、統計數據庫表中記錄個數,除了使用count(主鍵)外,可以使用count(1)、count(*)和count(0),
代碼如下:
select count(1) from t_people_info;
select count(*) from t_people_info;
select count(0) from t_people_info;
分享文章:mysql怎么判斷集合 判斷集合的主要依據是什么
網站路徑:http://m.kartarina.com/article18/hgjgdp.html
成都網站建設公司_創新互聯,為您提供營銷型網站建設、商城網站、搜索引擎優化、自適應網站、ChatGPT、標簽優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯