drop function if exists `inte_array`;
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;
mysql 逗號分割欄位的行列轉換
由於很多業務表因為歷史原因或者效能原因,都使用了違反第一正規化的設計模式,即同乙個列中儲存了多個屬性值。這種模式下,應用常常需要將這個列依據分隔符進行分割,並得到列轉行的結果 這裡使用substring index函式進行處理 建表語句 1 drop table ifexists tbl name ...
oracle用逗號分隔符分割的字段,轉換中文說明
經常碰到某些字段使用逗號等分隔符分割的配置,批量轉換成中文說明比較麻煩。目前想到使用正規表示式匹配,總體思路如下 先由一行用正規表示式提取分割成多行。再用參數列查詢中文名 再合成一行 引數中文說明表 select id,name from tab mb id name 501 很好 502 一般好 ...
Swift條件判斷中逗號的使用方法示例
在swift語言中,bool值是用來進行條件判斷的,可以進行 以及 的操作,從而實現多個表示式共同判斷。但是由於swift中存在可選項繫結,或者說是用let展開可選項的原因,有些地方條件判斷中不能夠使用 來進行處理。比如,我們要在變數hasvalue確實有值,且引數個數paramcount大於0的時...